如何⽤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)
cmake如何使用
然后基于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的命令⽤于拷贝指定⽬录的内容到另⼀个⽬录.