如何在 CMake 中定义一个规则,它将递归地将完整的目录结构复制到目标目录,并在make clean
之后运行时删除复制的目录?
问问题
1701 次
1 回答
3
利用
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/target_dir
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/dir ${CMAKE_BINARY_DIR}/target_dir)
add_custom_target(copy_dir_target ALL
DEPENDS ${CMAKE_BINARY_DIR}/target_dir)
CMake 应该自动添加使用 OUTPUT 生成的任何文件/目录add_custom_command()
。
如果这不起作用,您可以尝试收集您希望复制的文件file(GLOB ...)
,然后add_custom_command()
只复制单个文件foreach(FILE ${FILES})
,最后将所有内容包装到单个add_custom_command()
调用中。这样每个文件都将被清理,除了目标目录本身。
最后,您可以ADDITIONAL_MAKE_CLEAN_FILES
在源目录上设置属性,但请务必将文件复制到相应的二进制目录中。
于 2012-10-15T13:56:36.470 回答