我正在使用facebook的proxygen庫。 後者通過名爲deps.sh
的腳本構建,該腳本用於調用apt-get
作爲超級用戶。 我已經使用add_custom_target
指令成功創建了一個自定義目標cmake
,但由於上述調用錯誤sudo: no tty present and no askpass program specified
而失敗,這當然是有道理的。在使用cmake時,是否有可能以超級用戶的身份執行命令?
無論如何,我一直無法找到執行該腳本的方法,因此使用add_custom_target
作爲超級用戶調用命令。 我可以安全地安裝庫併爲我的同事編寫一個FindProxygen
模塊,以便構建過程保持一致,但我想知道是否有一個乾淨的解決方案來解決從cmake
以root身份啓動命令的問題,從而將該庫作爲項目的子模塊。
'find'模塊通常需要項目在'find_package()'調用時已經安裝,即**配置**階段。因此,在'add_custom_target'中安裝'proxygen'不適合你:它在** build **階段執行命令。無論如何,在超級用戶下執行一些命令並不是一個特定於cmake的問題:它取決於你,在項目安裝期間(或另一階段)如何請求管理員權限。 –
Tsyvarev
Tsyvarev是正確的,您需要在配置時或之前安裝'proxygen'。不要添加自定義目標,而是手動或從一些'install-deps.sh'腳本手動安裝'proxygen',或者在配置時間內調用'execute_process'(有條件調用它,所以如果已經安裝,請不要安裝)。我猜你可以像往常一樣在'execute_process'中設置askpass。 –
是的,我知道,我想將proxygen添加爲子模塊(我們使用git)來凍結其散列,但這樣做意味着在下載之後也會編譯它,這意味着執行需要root權限的自定義命令。我知道這很棘手,使用find *是一種更清潔的方法。 – skypjack