Я пытаюсь сделать простое приложение sfml / c ++, используя cmake.
Предположим, мне нужно обратиться к простому foo.png
где-то в моем коде. Я узнал, что я могу сделать это, только если он лежит внутри build
папка. Это папка, из которой я вызываю cmake ..
команда и где все мои файлы cmake (кроме CMakeLists.txt
и библиотечные модули, такие как FindSFML.cmake
) проживать.
Я не хочу, чтобы он там смотрел … но в папке, которая называется art
, находится в build
родительский каталог. Я хочу сделать это, чтобы папка «build» не была необходима для проекта (в том смысле, что любой может построить проект, не полагаясь на то, что внутри него).
Из того, что я видел — смотрю онлайн, то есть — все склонны предлагать использовать file(COPY ...)
команда (или что-то подобное), чтобы скопировать все необходимые активы / ресурсы в другую папку, аналогичную моей ранее упомянутой build
папка (я знаю, что должен быть технический термин для этого … каталог сборки, возможно?), и прибыль. Но действительно ли этот процесс копирования необходим? Разве вы не можете просто указать другой каталог для загрузки своих ресурсов / ресурсов?
Или, может быть, я все неправильно понял … cmake иногда трудно понять. Заранее спасибо и извините за отсутствие технических знаний.
Я нашел решение, используя символические ссылки и 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
Хорошего дня.
Других решений пока нет …