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