c++ - 使用CMake制作后如何将目录内容复制到构建目录中?

标签 c++ cmake

我在源文件旁边的 config 目录中有一些配置文件(xml、ini、...)。每次制作工程时,如何将config目录下的所有文件复制到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>)

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

作为Mark Lakata在下面的评论中指出,替换 PRE_BUILDPOST_BUILDadd_custom_command确保只有在构建成功时才会发生复制。

说明

  • ${CMAKE_COMMAND}是CMake的路径
  • -E让 CMake 运行命令而不是构建
  • copy_directoryCommand-Line Tool
  • config是目录(位于项目的根目录下),其内容将被复制到构建目标中
  • $<TARGET_FILE_DIR:MyTarget>是一个生成器表达式,在add_custom_command 中描述文档。

关于c++ - 使用CMake制作后如何将目录内容复制到构建目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779442/

相关文章:

c++ - 如何使用获得私有(private)复制构造函数和赋值构造函数的对象?

visual-c++ - 删除 cmake 上的默认标志

python - 为什么 boost::python 迭代器会跳过第一个元素?

c++ - 引用指针调用成员函数

msys2 中的 Cmake 无法找到 openssl

c++ - Cmake 中的资源文件夹

opencv - 将Cmake与PCL和OpenCV一起使用

CMake target_include_directories 范围的含义

c++ - Qt:在 QGraphicsView/QGraphicsScene 上有一个 child 的 QWidget 不工作

c++ - 如何实现 const_auto,因为 C++11 缺少它?