如何用cmake 拷贝文件到指定位置?

cmake是广泛使用的构建工具,在最近的项目中用到了它,之前都是手写Makefile文件,配合shell脚本也是挺好用。这两天有个需求就是发布项目文件时如何自动将文件copy到指定的目录,在网上查了一些资料,都是说使用add_custom_command,这的确没说错,但是不够详细,这里和大家分享一下编写的细节。首先给出这个命令的格式:

add_custom_command(TARGET ${targetname}POST_BUILD|PRE_BUILD

COMMAND ...

COMMAND ...)

...就是你想要执行的命令,可以执行n多条。一般我们基于某个工程目标来添加命令,就是通过add_executiable,add_library这些命令添加的target,如果想在编译后拷贝到某个文件,就用POST_BUILD,但是这样我觉得不够灵活,我用的是添加一个空的目标,使用命令

add_custom_target(xxxx)

然后基于xxxx来添加命令,这样就可以在想执行这些命令时使用make xxxx,比较灵活。

下面给出完整定义,我的目的是在编译后将项目目标拷贝到发布仓目录/home/zm/publish.

cmake编写如下

add_custom_target(release)

add_custom_command(TARGET release POST_BUILD

COMMAND ${CMAKE_COMMAND} -E

copy $<TARGET_FILE:mytarget>  /home/zm/publish)

执行cmake 生成Makefile,然后

make release,就可以将目标文件拷贝到目标目录了,另外还有一个copy_directory的命令用于拷贝指定目录的内容到另一个目录.