如何在CMake中定义一个规则,以递归方式将完整的目录结构复制到目标目录,以及在之后运行make clean
时删除复制的目录?
答案 0 :(得分: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()
次电话。这样每个文件都将被清除,目标dir本身除外。
最后,你可以在源目录上设置ADDITIONAL_MAKE_CLEAN_FILES
属性,但一定要将文件复制到相应的二进制目录。