哪一个CMake版本是最低版本?
我想为CMake定义一个最低版本,使用“CMake_最低要求”功能。 我看到一些项目将最低版本设置为2.8,另一些项目将最低版本设置为3.0或3.2。哪一个CMake版本是最低版本?,cmake,minimum,required,Cmake,Minimum,Required,我想为CMake定义一个最低版本,使用“CMake_最低要求”功能。 我看到一些项目将最低版本设置为2.8,另一些项目将最低版本设置为3.0或3.2。 我想了解您对该主题的看法和最佳实践。使用cmake_minimum_required()函数可以避免由于CMakeLists.txt假设cmake的版本比当前主机上安装的版本更高而产生任何神秘的错误消息 举个例子,过早地失败,并且有一个明确的信息 CMake 3.2 or higher is required. You are running v
我想了解您对该主题的看法和最佳实践。使用
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\u CXX\u标准11)
。我相信你会同意的
理想的环境是:
- 需要一个非常旧的版本,但不针对该旧版本进行实际测试(否!)
原因应该是显而易见的——构建可能会失败,而用户却得不到任何关于出错原因的提示。
意见和最佳实践往往与为什么?
问题的答案有关。我们会在可能的情况下选择最大(最后)版本?不是最后一个,而是您需要的版本;最新版本(或最新的夜间版本)可能不是您需要的。但首先,你需要确定这些限制背后的原因,并选择一个满足你大部分需求的,很可能不是最后一个版本。如果我要开始一个新项目,我会选择3.3作为最低要求。3.x版本确实引入了许多非常有用的命令(例如target\uu…
命令或if(…IN\u LIST…
),并且它具有更好的一致性检查(可通过策略配置)。我遇到了一些与我的环境相关的bug(例如与忍者一起出现),它们在3.3版本中得到了修复。@Mustafangul:如果你知道满足你要求的最低版本,并且它是几个版本,那么选择最新和最棒的版本基本上是故意让人讨厌的。在撰写本文时,cmake.org拥有3.4.3。Debian stable有3.0.2,Ubuntu wily有3.2.2,甚至Gentoo stable也“只有”3.3.1。因此,为了编译您的软件,基本上每个人都必须先手动下载并安装一个较新的CMake(这将开始恶化,因为它不会通过软件包管理器进行更新)。作为一名客户,我不喜欢这样。在CMakeLists.txt中保留一条评论,以跟踪为什么您需要这个版本的CMake,这有助于以后的维护。我很后悔没有按照DevSolar的建议写评论。我现在正盯着我的cmake_minimum_required
行,不记得为什么我选择了它的当前版本值。@EmileCormier:如果你记得你选择这个数字是因为{reason},请安装并检查有什么中断。-)或者对它不屑一顾,说“只要它起作用就没那么重要了。”——)我内心的~~完美主义者~~痴迷者会想做一个二进制搜索,以找到真正有效的最小版本-D