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的命令用于拷贝指定目录的内容到另一个目录.