CMP0053

新增於版本 3.1。

簡化變數參照與跳脫序列的評估。

CMake 3.1 引入了更快的方式來評估 變數參照跳脫序列,這些都記錄在 cmake-language(7) 手冊中。雖然在大多數情況下行為與舊的實作相同,但為了簡化行為,修正了一些邊緣情況。具體來說:

  • configure_file()string(CONFIGURE) 命令所定義的 @VAR@ 參照語法,不再於其他上下文中執行展開。

  • 字面 ${VAR} 參照語法只能包含字母數字字符(A-Za-z0-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 版本中移除。