set¶
將一般變數、快取變數或環境變數設定為給定的值。請參閱 cmake-language(7) 變數 文件,以了解一般變數和快取條目的作用域和互動方式。
此命令的簽名指定了 <value>...
佔位符,預期接受零或多個參數。多個參數將被合併為 分號分隔的列表,以形成要設定的實際變數值。
設定一般變數¶
- set(<variable> <value>... [PARENT_SCOPE])¶
在當前函數或目錄作用域中設定或取消設定
<variable>
如果至少給定一個
<value>...
,則將變數設定為該值。如果未給定值,則取消設定變數。這等同於
unset(<variable>)
。
如果給定
PARENT_SCOPE
選項,則變數將在當前作用域的上一層作用域中設定。每個新的目錄或function()
命令都會建立一個新的作用域。也可以使用block()
命令建立作用域。set(PARENT_SCOPE)
將變數的值設定到父目錄、呼叫函數或包含作用域中(以適用於手邊情況者為準)。變數值之前的狀態在目前作用域中保持不變(例如,如果之前未定義,則仍然未定義;如果之前有值,則仍然是該值)。block(PROPAGATE)
和return(PROPAGATE)
命令可以用作set(PARENT_SCOPE)
和unset(PARENT_SCOPE)
命令的替代方法,以更新父作用域。
注意
在評估 變數引用(形式為 ${VAR}
)時,CMake 首先搜尋具有該名稱的一般變數。如果不存在這樣的一般變數,CMake 將接著搜尋具有該名稱的快取條目。因此,**取消設定一般變數可能會暴露先前隱藏的快取變數**。若要強制形式為 ${VAR}
的變數引用傳回空字串,請使用 set(<variable> "")
,這會清除一般變數,但使其保持已定義狀態。
設定快取條目¶
- set(<variable> <value>... CACHE <type> <docstring> [FORCE])¶
設定給定的快取
<variable>
(快取條目)。由於快取條目旨在提供使用者可設定的值,因此預設情況下不會覆寫現有的快取條目。使用FORCE
選項來覆寫現有的條目。<type>
必須指定為下列其中一項BOOL
布林值
ON/OFF
值。cmake-gui(1)
提供一個核取方塊。FILEPATH
磁碟上檔案的路徑。
cmake-gui(1)
提供一個檔案對話方塊。PATH
磁碟上目錄的路徑。
cmake-gui(1)
提供一個檔案對話方塊。STRING
一行文字。
cmake-gui(1)
提供一個文字欄位,或者如果設定了STRINGS
快取條目屬性,則提供一個下拉式選單。INTERNAL
一行文字。
cmake-gui(1)
不顯示內部條目。它們可用於跨執行持續儲存變數。使用此類型隱含FORCE
。
<docstring>
必須指定為一行文字,為cmake-gui(1)
使用者提供選項的快速摘要。如果快取條目在呼叫之前不存在,或者給定了
FORCE
選項,則快取條目將設定為給定的值。快取條目可能在呼叫之前就已存在,但如果它是使用者在
cmake(1)
命令列上透過-D<var>=<value>
選項建立的,且未指定類型,則可能沒有設定類型。在這種情況下,set
命令將新增類型。此外,如果<type>
是PATH
或FILEPATH
,並且命令列上提供的<value>
是相對路徑,則set
命令會將該路徑視為相對於當前工作目錄的相對路徑,並將其轉換為絕對路徑。