使用CMake检测当前CMake版本

时间:2017-04-29 15:05:53

标签: 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。实际上,我们不需要版本3.8.0的任何新功能,但我们的政策是始终使用最新和最好的工具来防止"移植"未来的问题 - 例如从Qt4快速切换到Qt5在过去是一个很好的决定 - 我知道切换到最新的库和工具也有一些缺点,如讨论here,但我们想这样做方式。

因此,如果使用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()

我尝试阅读VERSION变量,但这不起作用。现在有人如何实现这项检查?

1 个答案:

答案 0 :(得分:14)

存在一些变量,描述为here

  

CMAKE_MAJOR_VERSION
  CMake的主要版本号,例如CMake 2.4.3中的“2”   CMAKE_MINOR_VERSION
  CMake的次要版本号,例如CMake 2.4.3中的“4”   CMAKE_PATCH_VERSION
  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()