0

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

4

1 回答 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 回答