使用CMake检测当前CMake版本

使用CMake检测当前CMake版本,cmake,Cmake,我正在从事一个使用CMake的项目。顶部的CMakeLists.txt文件包含以下行: cmake_minimum_required(VERSION 3.7.2) # Kittens will die if you switch to an earlier version of CMake. We suggest using CMake 3.8.0. 我想强制所有开发人员切换到CMake 3.8.0,但由于某些原因,并非所有开发人员都有管理权限,也无法立即从3.7.2切换到3.8.0。事实上,

我正在从事一个使用CMake的项目。顶部的
CMakeLists.txt
文件包含以下行:

cmake_minimum_required(VERSION 3.7.2) # Kittens will die if you switch to an earlier version of CMake. We suggest using CMake 3.8.0.
我想强制所有开发人员切换到CMake 3.8.0,但由于某些原因,并非所有开发人员都有管理权限,也无法立即从3.7.2切换到3.8.0。事实上,我们不需要3.8.0版的任何新功能,但我们的政策是始终使用最新和最好的工具来防止将来出现“移植”问题-例如,在过去,快速从Qt4切换到Qt5是一个很好的决定-我知道总是切换到最新的库和工具也有一些缺点,正如所讨论的,但我们想这样做

因此,如果使用CMake 3.7.2,我想输出一条警告消息,而不是强迫所有人使用3.8.0版。不知怎的,是这样的:

# not working - just pseudocode
if(CMAKE_VERSION == "3.7.2") 
    message("Please consider to switch to CMake 3.8.0")
endif()

我试图读取
版本
变量,但这不起作用。现在有人知道如何实现这一检查了吗?

有几个变量,如下所述:

CMAKE\u MAJOR\u版本

CMake的主要版本号,例如CMake 2.4.3中的“2”
CMAKE\u MINOR\u版本

CMake的次要版本号,例如CMake 2.4.3中的“4”
CMAKE\u PATCH\u版本

CMake的补丁版本号,例如CMake 2.4.3中的“3”

此外,变量
CMAKE_VERSION
包含该版本的字符串。 例如,在您的情况下,您可以使用以下选项:

if(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
    message("Please consider to switch to CMake 3.8.0")
endif()

其他比较运算符是
VERSION\u EQUAL
VERSION\u GREATER

我认为所有开发人员都可以构建软件,因此他们也可以构建cmake。这比用无关的东西使项目膨胀要好。CMake不需要安装。是否有可能在项目中部署适合您需要的版本?这就是我在项目中所做的,例如Visual Studio 2017或Android NDK。