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。实际上,我们不需要 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变量,但这不起作用。有没有人现在如何实现这种检查?

最佳答案

存在一些变量,描述为 here :

CMAKE_MAJOR_VERSION
major version number for CMake, e.g. the "2" in CMake 2.4.3
CMAKE_MINOR_VERSION
minor version number for CMake, e.g. the "4" in CMake 2.4.3
CMAKE_PATCH_VERSION
patch version number for CMake, e.g. the "3" in CMake 2.4.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 .

关于cmake - 使用 CMake 检测当前的 CMake 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697154/

相关文章:

CMake:用于复制与模式匹配的文件并保留目录结构的自定义命令

c++ - 在 Clion IDE 中使用 Crypto++

regex - CMake删除前两个字符正则表达式?

c++ - CMake 链接找不到库

c++ - 构建 OpenCV 时出现 CMake 错误 - CMakeLists 不匹配

c++ - 使用 Cmake 运行 ArUco 示例

cmake - .clang_complete 和 CMake?

c++ - 将 CMake 与 LLVM 一起使用时出错

c++ - CMake 将文件复制到当前工作目录 Linux

macos - MacPorts 中的 glib 的 g_object_set 链接器错误