Теперь я начинаю разглядывать 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, или есть ли другая папка, посвященная этой роли? Как обрабатывать видеоигры, в которых много файлов ресурсов?