CMP0126

在版本 3.21 中新增。

當此政策設定為 NEW 時,set(CACHE) 命令不會從目前範圍中移除任何同名的普通變數。OLD 行為會在以下情況下,從目前範圍中移除任何同名的普通變數:

  • 之前不存在該名稱的快取變數。

  • 之前存在該名稱的快取變數,但它沒有類型。當使用類似 cmake -DMYVAR=blah 而不是 cmake -DMYVAR:STRING=blah 的形式在命令列上設定變數時,可能會發生這種情況。

  • 設定快取變數時使用了 FORCEINTERNAL 關鍵字。

請注意,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 版本中移除。