Теперь я начинаю разглядывать CMake, но один вопрос по сути меня захлестнул. Предположим, что у меня была структура проекта, такая как:
.
+-- CMakeLists.txt
L-- src
+-- CMakeLists.txt
+-- main.cpp
L-- resources
L-- text_file.txt
В этом примере main.cpp
опирается resources/text_file.txt
, в том числе и на использование std::ifstream fileReader{ "text_file.txt" }
. Таким образом, в моем CMakeLists.txt
файле верхнего уровня у меня есть следующая строка:
file(COPY src/resources DESTINATION ${PROJECT_BINARY_DIR}/src)
Эта команда работает для каталога сборки, и вся моя установка (текстовые файлы, изображения и все подобное доступны для моего встроенного приложения). Однако это не очень хорошо работает для установки с помощью install
команды и . Например, если бы я хотел установить исполняемый файл, я мог бы использовать:install(TARGETS test_executable DESTINATION bin)
test_executable
Где bin
имя исполняемого файла. С другой стороны, установка этой папки bin кажется немного более сложной. Моя первоначальная мысль заключалась в том, чтобы «установить» эту папку resources
так, чтобы мой исполняемый файл мог получить к ней доступ, но потом я решил, что это была плохая идея, поскольку:
bin
Папка предназначена для исполняемых файлов, а не файлы ресурсов.
- (Я не совсем уверен в этом)
resources
- довольно распространенное имя для папки, содержащей ресурсы, поэтому их размещение bin
может быть рискованным. Если наилучшей практикой является размещение ресурсов в resources
папке resources
, то не будет ли это проблемой для других приложений, у которых также была resources
папка? (Я понимаю, что это не проблема, если бы я просто переименовал папку, но это не главное)
Это приводит к моему вопросу: Каким должно быть место установки моих файлов ресурсов, когда я использую CMake, чтобы мой встроенный исполняемый файл мог получить к ним доступ, используя путь к файлу, показанный выше? Должна ли она находиться bin
, или есть ли другая папка, посвященная этой роли? Как обрабатывать видеоигры, в которых много файлов ресурсов?