Где должны быть установлены файлы исполняемых файлов ресурсов с помощью команды установки CMake?

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

  1. binПапка предназначена для исполняемых файлов, а не файлы ресурсов.
  2. (Я не совсем уверен в этом) resources- довольно распространенное имя для папки, содержащей ресурсы, поэтому их размещение binможет быть рискованным. Если наилучшей практикой является размещение ресурсов в resourcesпапке resources, то не будет ли это проблемой для других приложений, у которых также была resourcesпапка? (Я понимаю, что это не проблема, если бы я просто переименовал папку, но это не главное)

Это приводит к моему вопросу: Каким должно быть место установки моих файлов ресурсов, когда я использую CMake, чтобы мой встроенный исполняемый файл мог получить к ним доступ, используя путь к файлу, показанный выше? Должна ли она находиться bin, или есть ли другая папка, посвященная этой роли? Как обрабатывать видеоигры, в которых много файлов ресурсов?

c++,cmake,resources,

0

Ответов: 1


0 принят

Ну, я сделал немного больше исследований и нашел этот ответ AskUbuntu , в котором говорится, что соответствующие файлы ресурсов хранятся в /usr/shareили /usr/local/share, которые используются для хранения независимых от платформы файлов.

Чтобы получить этот путь, большинство приложений настраивают скрипт, который хранит его в переменной в зависимости от платформы.

C ++, CMake, ресурсы,
Похожие вопросы