我config
在源文件旁边的目录中有一些配置文件(xml,ini,...)。每次创建项目时,如何将config目录中的所有文件复制到build目录中(可执行文件旁边)?
Answers:
您可以使用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所在的目录中。
正如马克Lakata指出在下面留言,替换PRE_BUILD
用POST_BUILD
的add_custom_command
确保,如果生成成功复制才会发生。
${CMAKE_COMMAND}
是通往CMake的道路-E
使CMake运行命令而不是构建copy_directory
是命令行工具config
是目录(位于项目的根目录下),其内容将被复制到构建目标中$<TARGET_FILE_DIR:MyTarget>
是文档中描述的生成器表达式add_custom_command
。make
它足够聪明,即使make MyTarget
它检测到未更改也不会执行。如果您的目标发生任何更改,那么make将在该目标上执行,并且文件将被复制。
make clean
知道在清理项目时必须删除复制的文件?
CMake支持外壳类型的文件副本。该链接应该对您有所帮助-如何将目录从源树复制到二进制树?
在我的项目中,我使用INSTALL在CMake中进行指定,以及将二进制文件与conf文件一起移动的位置和位置。执行cmake之后,使用“ make install”。
install()
命令,但这是一种特殊情况:代码可以构建,通过单元测试,并且可以供其他人使用。我不安装它来调试它。
add_executable
或添加的内容add_library
。