CMP0053¶
新增於版本 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_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為是 根據定義已棄用
,並可能會在未來的 CMake 版本中移除。