CMP0126¶
在版本 3.21 中新增。
當此政策設定為 NEW
時,set(CACHE)
命令不會從目前範圍中移除任何同名的普通變數。OLD
行為會在以下情況下,從目前範圍中移除任何同名的普通變數:
之前不存在該名稱的快取變數。
之前存在該名稱的快取變數,但它沒有類型。當使用類似
cmake -DMYVAR=blah
而不是cmake -DMYVAR:STRING=blah
的形式在命令列上設定變數時,可能會發生這種情況。設定快取變數時使用了
FORCE
或INTERNAL
關鍵字。
請注意,NEW
行為與政策 CMP0077
的類似 NEW
行為有一個重要的差異。set(CACHE)
命令總是會設定快取變數,如果該變數之前不存在,則不論 CMP0126
政策設定為何。option()
命令將 不會 設定快取變數,如果已經存在同名的非快取變數,且 CMP0077
設定為 NEW
。
此政策在 CMake 版本 3.21 中引入。它可以由 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 預設會使用 OLD
行為,而 *不* 發出警告。
請參閱 CMAKE_POLICY_WARNING_CMP0126
變數的文件,以控制警告。
可以使用 CMAKE_POLICY_DEFAULT_CMP0126
變數來設定子目錄中第三方專案的政策,而無需修改它。
注意
政策的 OLD
行為 根據定義已被棄用
,並可能在未來的 CMake 版本中移除。