如何使用CMake和干净的目标复制目录?

时间:2012-10-14 08:49:25

标签: cmake

如何在CMake中定义一个规则,以递归方式将完整的目录结构复制到目标目录,以及在之后运行make clean时删除复制的目录?

1 个答案:

答案 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属性,但一定要将文件复制到相应的二进制目录。