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
命令會將該路徑視為相對於目前工作目錄,並將其轉換為絕對路徑。