CMP0053¶
警告
此政策的 OLD
行為已在 CMake 4.0 版本中移除。此政策必須透過呼叫 cmake_minimum_required()
或 cmake_policy()
設定為 NEW
。
版本 3.1 新增。
簡化變數參考和跳脫序列評估。
CMake 3.1 引入了更快速的實作,用於評估 變數參考 和 跳脫序列,這些都在 cmake-language(7)
手冊中有所記載。雖然在大多數情況下,此行為與舊版實作相同,但為了簡化行為,已清理了一些邊角案例。具體來說:
由
configure_file()
和string(CONFIGURE)
指令定義的@VAR@
參考語法展開,不再在其他情境中執行。字面
${VAR}
參考語法可能僅包含字母數字字元 (A-Z
、a-z
、0-9
) 以及字元_
、.
、/
、-
和+
。請注意,$
在技術上在NEW
行為中是允許的,但在OLD
行為中是無效的。這是由於在實作CMP0053
時的一個疏忽,因此不鼓勵將其用作字面變數參考。名稱中包含其他字元的變數仍然可以間接參考,例如:set(varname "otherwise & disallowed $ characters") message("${${varname}}")
不考量政策
CMP0010
的設定,因此不正確的變數參考語法始終是錯誤。在變數名稱中,允許跳脫更多字元。先前,只有
()#" \@^
是有效的跳脫字元。現在,任何非字母數字、非分號、非 NUL 字元都可以依照 跳脫序列 章節中的escape_identity
產生式進行跳脫,該章節位於cmake-language(7)
手冊中。
此政策的 OLD
行為是遵循舊版行為來處理變數參考和跳脫序列。NEW
行為是使用更簡化的變數展開和跳脫序列評估規則。
此政策在 CMake 3.1 版本中引入。在 CMake 4.0 版本中移除之前,可以透過 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。