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 及更高版本中产生弃用警告。