cmake_minimum_required

要求 CMake 的最低版本。

cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])

Added in version 3.12: 可選的 <policy_max> 版本行為;在舊版 CMake 中會被忽略。

設定專案所需的 CMake 最低版本。同時也會更新策略設定,如下所述。

<min> 和可選的 <policy_max> 各自是 CMake 版本,格式為 major.minor[.patch[.tweak]],而 ... 則是字面上的意思。

如果運行的 CMake 版本低於要求的 <min> 版本,它將停止處理專案並報告錯誤。可選的 <policy_max> 版本(如果指定)必須至少為 <min> 版本,並設定 策略版本。如果運行的 CMake 版本早於 3.12,則額外的 ... 點將被視為版本組件分隔符,導致 ...<max> 部分被忽略,並保留基於 <min> 的策略的 3.12 之前的行為。

此命令會將 CMAKE_MINIMUM_REQUIRED_VERSION 變數的值設定為 <min>

FATAL_ERROR 選項被接受,但在 CMake 2.6 及更高版本中被忽略。 應指定此選項,以便 CMake 2.4 及更低版本會失敗並顯示錯誤,而不僅僅是警告。

注意

即使在呼叫 project() 命令之前,也要在頂層 CMakeLists.txt 檔案的開頭呼叫 cmake_minimum_required() 命令。 在調用其他可能受版本和策略設定影響的命令之前,建立版本和策略設定非常重要。另請參閱策略 CMP0000

function() 內部呼叫 cmake_minimum_required() 會將某些效果限制在調用時的函數範圍內。 例如,CMAKE_MINIMUM_REQUIRED_VERSION 變數將不會在調用範圍中設定。 但是,函數不會引入自己的策略範圍,因此調用者的策略設定會受到影響(請參閱下文)。 由於這種會影響和不會影響調用範圍的混合情況,通常不建議在函數內部呼叫 cmake_minimum_required()

策略版本

cmake_minimum_required(VERSION <min>[...<max>]) 隱式調用

cmake_policy(VERSION <min>[...<max>])

這指定目前的 CMake 程式碼是為給定的 CMake 版本範圍 <min>[...<max>] 編寫的。 它將「策略版本」設定為

  • 範圍的 <max> 版本(如果指定),或

  • <min> 版本,或

  • 如果 CMAKE_POLICY_VERSION_MINIMUM 變數的值高於其他兩個版本,則設定為該值。

策略版本有效地請求給定 CMake 版本偏好的行為,並告知較新版本的 CMake 關於其新策略的警告。 在該版本或更早版本中引入的且為運行 CMake 版本所知的所有策略都將設定為使用 NEW 行為。 在較新版本中引入的所有策略都將被取消設定(除非 CMAKE_POLICY_DEFAULT_CMP<NNNN> 變數設定了預設值)。 這有效地請求給定 CMake 版本偏好的行為,並告知較新版本的 CMake 關於其新策略的警告。

Changed in version 4.0: 已移除與 CMake 3.5 之前版本的兼容性。 不指定至少 3.5 作為其策略版本的 cmake_minimum_required(VERSION)cmake_policy(VERSION) 呼叫(可選地通過 ...<max>)將在 CMake 4.0 及更高版本中產生錯誤。

Changed in version 3.31: 與 CMake 3.10 之前版本的兼容性已被棄用。 不指定至少 3.10 作為其策略版本的 cmake_minimum_required(VERSION)cmake_policy(VERSION) 呼叫(可選地通過 ...<max>)將在 CMake 3.31 及更高版本中產生棄用警告。

Changed in version 3.27: 與 CMake 3.5 之前版本的兼容性已被棄用。 不指定至少 3.5 作為其策略版本的 cmake_minimum_required(VERSION)cmake_policy(VERSION) 呼叫(可選地通過 ...<max>)將在 CMake 3.27 及更高版本中產生棄用警告。

Changed in version 3.19: 與 CMake 2.8.12 之前版本的兼容性已被棄用。 不指定至少 2.8.12 作為其策略版本的 cmake_minimum_required(VERSION)cmake_policy(VERSION) 呼叫(可選地通過 ...<max>)將在 CMake 3.19 及更高版本中產生棄用警告。

另請參閱