[英]cmake run script for install target?
我有一個項目,其中“安裝”代碼並不像復制一些文件那么簡單。 使用傳統的 Makefile,我只需創建一個make install
目標,該目標運行一系列 shell 命令來執行我需要的操作。
但是谷歌搜索並沒有導致這方面的例子(有些事情接近,但不完全......我認為)。 所以基本上,我想要一個自定義命令,它取決於目標可執行文件,但不產生任何內容並運行一個不需要可移植的腳本來完成“安裝”
任何人都有這樣的例子?
CMake 的install
命令允許自定義腳本。 參見官方文檔: install
- 自定義安裝邏輯:
install([[SCRIPT <file>] [CODE <code>]] [COMPONENT <component>] [...])
SCRIPT 表單將在安裝期間調用給定的 CMake 腳本文件。 如果腳本文件名是相對路徑,它將根據當前源目錄進行解釋。 CODE 表單將在安裝期間調用給定的 CMake 代碼。 代碼被指定為雙引號字符串中的單個參數。 例如,代碼
install(CODE "MESSAGE(\\"Sample install message.\\")")
將在安裝過程中打印一條消息。
要運行自定義 shell 腳本(或任何程序),請將install(CODE ...)
與execute_process
結合使用:
install(CODE "execute_process(COMMAND my_script.sh)")
這對我add_custom_target
:使用add_custom_target
,然后將主目標作為依賴項添加到自定義目標目標。
# create custom target for setcap to be executed
add_custom_target(setcap ALL
WORKING_DIRECTORY ${OUTPUT_DIR}/bin
COMMAND ${CMAKE_COMMAND} -E 'sudo setcap cap_net_raw,cap_net_admin+eip ${}/bin/<executable name>)
# create a dependency on the custom target for main target, setcap depends on ${proj_name}
add_dependencies(setcap ${proj_name})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.