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-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 4.0 版本中移除之前,可以透過 cmake_policy()cmake_minimum_required() 進行設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。