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 的未來版本中移除。