cmake-policies(7)

簡介

CMake 中的政策用於在多個版本中保持向後相容的行為。當引入新政策時,較新的 CMake 版本將開始警告關於向後相容的行為。可以使用 cmake_policy() 命令明確請求 OLD 或向後相容的行為來停用警告。也可以請求 NEW 或非向後相容的政策行為,以避免警告。每個政策也可以使用 CMAKE_POLICY_DEFAULT_CMP<NNNN> 變數在命令列上明確設定為 NEWOLD 行為。

政策是一種棄用機制,而不是可靠的功能切換。除了在其他方面凍結或穩定的程式碼庫中靜音警告,或暫時作為較大遷移路徑的一部分外,幾乎永遠不應將政策設定為 OLD。每個政策的 OLD 行為都是不希望的,並且在未來的版本中將被錯誤條件取代。

如果使用太舊的 CMake 版本來建置專案,cmake_minimum_required() 命令不僅會回報錯誤。它還會將該 CMake 版本或更早版本中引入的所有政策設定為 NEW 行為。若要在不增加最低要求的 CMake 版本的情況下管理政策,可以使用 if(POLICY) 命令。

if(POLICY CMP0990)
  cmake_policy(SET CMP0990 NEW)
endif()

這具有使用較新 CMake 版本中的 NEW 行為的效果,使用者可能會使用這些版本,而不會發出相容性警告。

在某些情況下,政策的設定被限制為不會傳播到父範圍。例如,如果 include() 命令或 find_package() 命令讀取的檔案包含 cmake_policy() 的使用,則該政策設定預設不會影響呼叫者。這兩個命令都接受可選的 NO_POLICY_SCOPE 關鍵字來控制此行為。

也可以使用 CMAKE_MINIMUM_REQUIRED_VERSION 變數來判斷是否回報使用已棄用的巨集或函式的錯誤。

CMake 3.31 引入的政策

CMake 3.30 引入的政策

CMake 3.29 引入的政策

CMake 3.28 引入的政策

CMake 3.27 引入的政策

CMake 3.26 引入的政策

CMake 3.25 引入的政策

CMake 3.24 引入的政策

CMake 3.23 引入的政策

CMake 3.22 引入的政策

CMake 3.21 引入的政策

CMake 3.20 導入的策略

CMake 3.19 導入的策略

CMake 3.18 導入的策略

CMake 3.17 導入的策略

CMake 3.16 導入的策略

CMake 3.15 導入的策略

CMake 3.14 導入的策略

CMake 3.13 導入的策略

CMake 3.12 導入的策略

CMake 3.11 導入的策略

CMake 3.10 導入的策略

CMake 3.9 導入的策略

CMake 3.8 導入的策略

CMake 3.7 導入的策略

CMake 3.4 導入的策略

CMake 3.3 導入的策略

CMake 3.2 導入的策略

CMake 3.1 導入的策略

CMake 3.0 導入的策略

CMake 2.8 導入的策略

CMake 2.6 導入的策略