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

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)容到另一個目錄.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容