【问题标题】:Detect current CMake version using CMake使用 CMake 检测当前 CMake 版本
【发布时间】:2017-04-29 15:05:52
【问题描述】:

我正在开发一个使用 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 所讨论的那样,但我们希望这样做。

正因如此,与其强制大家使用 3.8.0 版本,不如在使用 CMake 3.7.2 时输出警告信息。有点像这样:

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

我试图读取VERSION 变量,但这不起作用。现在有谁可以实现这个检查?

【问题讨论】:

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

标签: cmake


【解决方案1】:

存在一些变量,描述为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()

其他比较运算符有VERSION_EQUALVERSION_GREATER

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多