Ответ 1
Вы можете использовать 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" в каталог, где будет MyTarget
целевой exe/lib.
Как отмечает Марк Лаката в комментарии ниже, замена PRE_BUILD
на POST_BUILD
в add_custom_command
гарантирует, что копирование произойдет только в случае add_custom_command
сборки.
объяснение
-
${CMAKE_COMMAND}
- это путь к CMake. -
-E
делает команды запуска CMake вместо сборки -
copy_directory
- это инструмент командной строки -
config
- это каталог (который находится в корне проекта), содержимое которого будет скопировано в цель сборки -
$<TARGET_FILE_DIR:MyTarget>
- это выражение генератора, описанное в документацииadd_custom_command
.