
你可以用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最终的目录时,都会执行此操作.
正如马克Lakata在下面评论指出,更换PRE_BUILD用POST_BUILD在add_custom_command确保复制如果生成成功才会发生.
${CMAKE_COMMAND} 是CMake的路径-E 使CMake运行命令而不是构建copy_directory是一个命令行工具config是一个生成器表达式,在$<TARGET_FILE_DIR:MyTarget>文档中描述.除了最佳答案,
要复制目录本身而不是内容,您可以添加/${FOLDER_NAME}到第二个参数的末尾。
像这样:
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:${PROJECT_NAME}>/config)CMake 通过以下方式启用符号链接create_symlink:
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink
${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:${PROJECT_NAME}>/config)