【问题标题】:How can I tell which minimum CMake version to require in CMakeLists.txt?如何判断 CMakeLists.txt 中需要哪个最低 CMake 版本?
【发布时间】:2016-12-26 22:52:43
【问题描述】:

CMakeLists.txt 脚本中,习惯上会有:

cmake_minimum_required(VERSION x.y)

对应的 x.y 版本号。但是 - 你怎么知道那个最低版本是什么?我不使用旧版本;随着我的发行版更新,CMake 也会更新,所以我什至可能引入了需要更新版本的命令,而我只是不知道。

理论上,我可以要求使用我测试过 CMakeLists.txt 的版本 - 但它们非常新,我不想将我的代码的用户限制在这些版本中。

【问题讨论】:

  • @wasthishelpful 不,这不是重复的。您无法检查每个 CMake 命令是否使用了更新的功能。
  • @usr1234567 我的坏^^也许更多这个:CMake - Which Version as Minimum
  • @wasthishelpful 确实有些重叠。实际上,如果您想关闭一个问题,请关闭另一个问题,因为它是基于意见的,而这是以更一般的方式编写的。
  • @usr1234567:是的,对不起,我给你投票但忘了接受。也没有时间按照你的建议做:-(

标签: cmake minimum-requirements


【解决方案1】:

没有自动的方法可以做到这一点。以下是我使用过的一些方法:

  1. 如果您使用 CMake 一段时间,您可能会大致记得哪些功能是新旧的。选择一些您认为较新的功能,并阅读文档以了解支持它们的版本。
  2. 如果您只能安装一两个旧版本,可能就足够了。 CMake 2.8.x 非常受欢迎,因此安装它并测试它是否有效(也许修复它确实有效)对于某些用户来说是一项不错的服务。
  3. 别担心。将最小值设置为 2.8.10,然后在用户遇到特定问题时接受补丁或错误报告。将此数字设置得太低不太可能造成任何严重的危害——通常它只会导致与“CMake 版本太旧”不同的错误消息。

【讨论】:

  • 在构建过程中引导特定的 CMake 版本怎么样?
  • @Kamiccolo 这会增加构建系统的复杂性。对于较小的项目,它超出了规模。此外,您将构建哪个版本?最低要求的,最新的,一些手动挑选和测试的?您是在任何地方构建 CMake,还是只在 CMake 太旧的系统上构建?
  • @usr1234567:谢谢我更新了我的答案以指定 2.8.10 而不是 2.8。
【解决方案2】:

tl;dr:尝试使用不同的 CMake 版本进行构建。

根据声称的最低要求版本从https://cmake.org/files/ 下载 CMake 二进制文件。您可以将它们解压缩到某个目录并使用此 CMake 以确保它仍然是所需的最低版本。您可以同时拥有任意多个版本。不要忘记删除构建目录。

一个你没有提到但也很重要的问题:用更新的版本检查你的代码。新政策可能会导致数十个警告,许多项目试图在发布中避免警告。因此,最好使用具有相同程序的最新版本。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 2022-09-27
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多