簡體   English   中英

安裝目標的cmake運行腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM