举例说明
1. 假设当前的cmake版本为3.10.2
>cmake --version
cmake version 3.10.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
示1.1:指定了min
,且比当前cmake版本低
# CMakeLists.txt文件
cmake_minimum_required (VERSION 2.8.0)
# 执行结果
>cmake .
-- Configuring done
-- Generating done
-- Build files have been written to:XXXXXX
示例1.2:指定了min
,且比当前的cmake版本高
# CMakeLists.txt 文件
cmake_minimum_required (VERSION 3.12.0)
# 执行结果
>cmake .
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.12.0 or higher is required. You are running version 3.10.2
-- Configuring incomplete, errors occurred!
示例1.3:指定了min
,也指定了max
,实际上由于当前环境的cmake版本低于3.12,因此...max
是会被忽略的
# CMakeLists.txt 文件
cmake_minimum_required (VERSION 3.10.0...3.12.0)
# 执行结果
>cmake .
-- Configuring done
-- Generating done
-- Build files have been written to:XXXXXX
2. 假设当前的cmake版本为3.18.2
>cmake --version
cmake version 3.18.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
当只指定min
的时候,结果和示例1.1、示例1.2一致。如果同时也指定了max
,有如下几种情况:
示2.1:指定了max
,且比min
版本低
# CMakeLists.txt文件
cmake_minimum_required (VERSION 3.12.2...3.10.2)
# 执行结果,会提示错误
>cmake .
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
Policy VERSION range "3.12.2...3.10.2" specifies a larger minimum than
maximum.
示2.2:指定了max
,高于min
且比当前运行的cmake版本高
# CMakeLists.txt文件
cmake_minimum_required (VERSION 3.12.2...3.19.2)
# 执行结果
>cmake .
-- Configuring done
-- Generating done
-- Build files have been written to:XXXXXX
示2.3:指定了max
,高于min
且比当前运行的cmake版本低
# CMakeLists.txt文件
cmake_minimum_required (VERSION 3.12.2...3.16.2)
# 执行结果
>cmake .
-- Configuring done
-- Generating done
-- Build files have been written to:XXXXXX