cmake_minimum_required

需要最低版本的 cmake。

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

版本 3.12 中添加: 可选的 <policy_max> 版本。

设置项目所需最低版本的 cmake。还会按以下方式更新策略设置。

<min> 和可选的 <policy_max> 是形式为 major.minor[.patch[.tweak]] 的每个 CMake 版本,且 ... 是文字意义。

如果正在运行的 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) 命令隐式调用 cmake_policy(VERSION) 命令来指定当前项目代码是针对给定范围的 CMake 版本编写的。CMake 运行版本已知的所有策略以及在 <min>(或指定的 <max>,如果指定)版本或更早版本中引入的策略都将设置为使用 NEW 行为。在更高版本中引入的所有策略都将取消设置。这将有效地请求从给定 CMake 版本开始的首选行为,并告知较新的 CMake 版本警告其新策略。

当指定的 <min> 版本高于 2.4 时,该命令隐式调用

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

它根据指定的版本范围设置 CMake 策略。当给定的 <min> 版本为 2.4 或更低版本时,该命令隐式调用

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

它为 CMake 2.4 及更低版本启用兼容性特性。

3.31 版本中已更改: 推荐不再使用早于 CMake 3.10 的版本。对 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 及更高版本中产生弃用警告。

另请参见