CMP0012¶
if()
識別數字和布林常數。
在 CMake 2.6.4 及更早版本中,if()
命令會隱式地取消引用對應於變數的參數,即使這些變數的名稱像數字或布林常數,除了 0
和 1
。 數字和布林常數(例如 true
、false
、yes
、no
、on
、off
、y
、n
、notfound
、ignore
(所有都不區分大小寫))在某些情況下會被識別,但並非所有情況。 例如,程式碼 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 版本中移除。