CMake:make后如何将目录的内容复制到build目录下

我在源文件旁边的“config”目录中有一些configuration文件(xml,ini,…)。 每次我创build项目时,如何将configuration目录中的所有文件复制到构build目录(可执行文件旁边)?

你可以使用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>) 

这会在您每次构buildMyTarget时执行,并将“/ config”的内容复制到目标exe / lib将最终结束的目录中。

正如Mark Lakata在下面的评论中指出的那样,在PRE_BUILD中用POST_BUILDreplaceadd_custom_command确保只有在构build成功时才会进行复制。

CMake支持一个shelltypes的文件副本。 这个链接应该对你有帮助 – 如何将目录从源码树复制到二叉树?

在我的项目中,我使用INSTALL在CMake中指定了什么和在哪里移动我的二进制文件的conf文件。 执行cmake后,使用“make install”。