CMake устанавливает каталог ресурсов / ресурсов по умолчанию

Я пытаюсь сделать простое приложение sfml / c ++, используя cmake.

Предположим, мне нужно обратиться к простому foo.png где-то в моем коде. Я узнал, что я могу сделать это, только если он лежит внутри build папка. Это папка, из которой я вызываю cmake .. команда и где все мои файлы cmake (кроме CMakeLists.txt и библиотечные модули, такие как FindSFML.cmake) проживать.

Я не хочу, чтобы он там смотрел … но в папке, которая называется art, находится в buildродительский каталог. Я хочу сделать это, чтобы папка «build» не была необходима для проекта (в том смысле, что любой может построить проект, не полагаясь на то, что внутри него).

Из того, что я видел — смотрю онлайн, то есть — все склонны предлагать использовать file(COPY ...) команда (или что-то подобное), чтобы скопировать все необходимые активы / ресурсы в другую папку, аналогичную моей ранее упомянутой build папка (я знаю, что должен быть технический термин для этого … каталог сборки, возможно?), и прибыль. Но действительно ли этот процесс копирования необходим? Разве вы не можете просто указать другой каталог для загрузки своих ресурсов / ресурсов?

Или, может быть, я все неправильно понял … cmake иногда трудно понять. Заранее спасибо и извините за отсутствие технических знаний.

0

Решение

Я нашел решение, используя символические ссылки и add_custom_command функция.

Вот оно (при условии макета, описанного выше):

set (source "${CMAKE_SOURCE_DIR}/resources")
set (destination "${CMAKE_CURRENT_BINARY_DIR}/resources")
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${source} ${destination}
DEPENDS ${destination}
COMMENT "symbolic link resources folder from ${source} => ${destination}")

Я действительно получил это из блога … вот ссылка на статью для хорошего гражданства: http://qrikko.blogspot.it/2016/05/cmake-and-how-to-copy-resources-during.html

Хорошего дня.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector