cmake_minimum_required

要求 CMake 的最低版本。

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

在版本 3.12 中新增: 可选的 <policy_max> 版本行为;在较旧的 CMake 中被忽略。

设置项目所需的 CMake 的最低版本。还会更新策略设置,如下所述。

<min> 和可选的 <policy_max> 都是 major.minor[.patch[.tweak]] 形式的 CMake 版本,并且 ... 是字面量。

如果运行的 CMake 版本低于 <min> 所需版本,它将停止处理项目并报告错误。可选的 <policy_max> 版本(如果指定)必须至少是 <min> 版本,并设置策略版本。如果运行的 CMake 版本早于 3.12,额外的 ... 点将被视为版本组件分隔符,导致 ...<max> 部分被忽略,并保留 3.12 之前的基于 <min> 制定策略的行为。

此命令将把 CMAKE_MINIMUM_REQUIRED_VERSION 变量的值设置为 <min>

FATAL_ERROR 选项被 CMake 2.6 及更高版本接受但忽略。应指定它,以便 CMake 2.4 及更低版本会因错误而不是警告而失败。

注意

在顶层 CMakeLists.txt 文件开头调用 cmake_minimum_required() 命令,甚至在调用 project() 命令之前。在调用可能受其行为影响的其他命令之前,建立版本和策略设置非常重要。另请参阅策略 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 版本要对其新策略发出警告。

在版本 4.0 中更改: 对低于 3.5 版本的 CMake 的兼容性已移除。调用 cmake_minimum_required(VERSION)cmake_policy(VERSION) 未指定至少 3.5 作为其策略版本(可选通过 ...<max>)将导致 CMake 4.0 及更高版本中的错误。

在版本 3.31 中更改: 对低于 3.10 版本的 CMake 的兼容性已弃用。调用 cmake_minimum_required(VERSION)cmake_policy(VERSION) 未指定至少 3.10 作为其策略版本(可选通过 ...<max>)将导致 CMake 3.31 及更高版本中的弃用警告。

在版本 3.27 中更改: 对低于 3.5 版本的 CMake 的兼容性已弃用。调用 cmake_minimum_required(VERSION)cmake_policy(VERSION) 未指定至少 3.5 作为其策略版本(可选通过 ...<max>)将导致 CMake 3.27 及更高版本中的弃用警告。

在版本 3.19 中更改: 对低于 2.8.12 版本的 CMake 的兼容性已弃用。调用 cmake_minimum_required(VERSION)cmake_policy(VERSION) 未指定至少 2.8.12 作为其策略版本(可选通过 ...<max>)将导致 CMake 3.19 及更高版本中的弃用警告。

另请参阅