CMP0012

if() 識別數字和布林常數。

在 CMake 2.6.4 及更早版本中,if() 命令會隱式地取消引用對應於變數的參數,即使這些變數的名稱像數字或布林常數,除了 01。 數字和布林常數(例如 truefalseyesnoonoffynnotfoundignore(所有都不區分大小寫))在某些情況下會被識別,但並非所有情況。 例如,程式碼 if(TRUE) 可能會被評估為 false。 數字(例如 2)僅在布林表達式中被識別,例如 if(NOT 2)(導致 false),但不會作為單一參數被識別,例如 if(2)(也導致 false)。較新版本的 CMake 傾向於將數字和布林常數視為字面值,因此它們不應用作變數名稱。

此政策的 OLD 行為是隱式地取消引用名稱像數字和布林常數的變數。此政策的 NEW 行為是識別數字和布林常數,而不取消引用具有此類名稱的變數。

此政策在 CMake 2.8.0 版本中引入。它可以使用 cmake_policy()cmake_minimum_required() 進行設定。 如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

政策的 OLD 行為根據定義已棄用,並可能在未來的 CMake 版本中移除。