cmake是廣泛使用的構(gòu)建工具,在最近的項目中用到了它,之前都是手寫Makefile文件,配合shell腳本也是挺好用。這兩天有個需求就是發(fā)布項目文件時如何自動將文件copy到指定的目錄,在網(wǎng)上查了一些資料,都是說使用add_custom_command,這的確沒說錯,但是不夠詳細(xì),這里和大家分享一下編寫的細(xì)節(jié)。首先給出這個命令的格式:
add_custom_command(TARGET ${targetname}POST_BUILD|PRE_BUILD
COMMAND ...
COMMAND ...)
...就是你想要執(zhí)行的命令,可以執(zhí)行n多條。一般我們基于某個工程目標(biāo)來添加命令,就是通過add_executiable,add_library這些命令添加的target,如果想在編譯后拷貝到某個文件,就用POST_BUILD,但是這樣我覺得不夠靈活,我用的是添加一個空的目標(biāo),使用命令
add_custom_target(xxxx)
然后基于xxxx來添加命令,這樣就可以在想執(zhí)行這些命令時使用make xxxx,比較靈活。
下面給出完整定義,我的目的是在編譯后將項目目標(biāo)拷貝到發(fā)布倉目錄/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)
執(zhí)行cmake 生成Makefile,然后
make release,就可以將目標(biāo)文件拷貝到目標(biāo)目錄了,另外還有一個copy_directory的命令用于拷貝指定目錄的內(nèi)容到另一個目錄.