哪个CMake版本最低?

时间:2016-02-22 09:34:59

标签: cmake minimum required

我想用" cmake_minimum_required"来定义CMake的最小版本。设施。 我已经看到一些项目设置了最低版本2.8,其他一些设置为3.0或3.2。 我想了解您对该主题的看法和最佳实践。

1 个答案:

答案 0 :(得分:18)

cmake_minimum_required()函数用于避免由于CMakeLists.txt假定CMake的更高版本而不是当前主机上安装的版本而导致的任何神秘错误消息。

作为一个例子,早期失败,并有明确的信息......

CMake 3.2 or higher is required. You are running version 2.8.12.2

...比以后的某些更加神秘的东西更受欢迎......

In file included from /home/foouser/src/testprj/string.cpp:1:0:
/home/foouser/src/testprj/string.hpp:94:29: error: ‘std::is_same’ has not been declared

...只是因为在这个例子中,较旧的CMake版本不支持set( CMAKE_CXX_STANDARD 11 )。我相信你会同意的。

理想的设置是:

  1. 包含脚本所需功能的最旧版本。
  2. 与运行旧版本的用户以及脚本的最大兼容性。但它需要测试哪个版本完全它首先支持你的构造。所以它通常归结为:

    1. 您测试的最旧版本 具有脚本所需的所有功能。
    2. 这对大多数项目来说可能已经足够了。如果你是唯一一个真正参与该项目的人,并且在你的列表上测试CMake兼容性真的低,你可能会最终得到:

      1. 您当前使用的版本。
      2. 一旦其他人试图编译您的项目,后一种方法就会有严重的缺陷。很多人使用最新版本的一切。特别是在Linux上,默认是使用包管理器为您提供的任何内容。例如,Ubuntu狡猾,目前版本为3.2.2 - 可能有更高版本,但除非你需要更高版本,否则你不应该 require (因为这意味着如果没有先手动安装较新版本的CMake,人们将无法构建您的项目。)

        要做的是......

        • 要求一个非常旧的版本,但实际上并不是测试对那个旧版本(不!)。

        原因应该是显而易见的 - 建筑可能会失败,用户不会对出现问题的原因提出任何暗示。