你可以用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>
文档中描述.
- 有没有办法让`make clean`知道在项目清理时必须删除复制的文件? (6认同)
- POST_BUILD可能是更好的选择,这意味着只有在构建成功时才会复制文件. (5认同)
- 有没有办法复制目录本身而不是内容? (3认同)
除了最佳答案,
要复制目录本身而不是内容,您可以添加/${FOLDER_NAME}
到第二个参数的末尾。
像这样:文章来源:https://www.toymoban.com/news/detail-600174.html
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
:文章来源地址https://www.toymoban.com/news/detail-600174.html
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)
到了这里,关于[CMakeLists]使用CMake后如何将目录内容复制到build目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!