Вопрос: CMake: как скопировать содержимое каталога в каталог сборки после make


У меня есть некоторые файлы конфигурации (xml, ini, ...) в каталоге «config» рядом с исходными файлами. Как я могу копировать все файлы в каталоге конфигурации в каталог сборки (рядом с исполняемым файлом) каждый раз, когда я делаю проект?


54


источник


Ответы:


Вы можете использовать add_custom_command,

Скажите, что ваша цель называется MyTarget, вы можете сделать:

add_custom_command(TARGET MyTarget PRE_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_directory
                       ${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:MyTarget>)

Это выполняется каждый раз, когда вы строите MyTarget и копирует содержимое «/ config» в каталог, в котором будет завершен целевой exe / lib.

В виде Марк Лаката  указывает в комментарии ниже, заменяя PRE_BUILD с POST_BUILD в add_custom_command гарантирует, что копирование произойдет, только если сборка завершится успешно.


90



CMake поддерживает копию файла типа оболочки. Эта ссылка должна быть полезной для вас - Как скопировать каталог из исходного дерева в двоичное дерево?


3



В моем проекте я использую INSTALL для указания в CMake, что и где я перемещаю свой двоичный файл с conf-файлом. После выполнения cmake используйте «make install».


-4