有没有一种简单的方法可以找到 CMake 的最低要求版本应该是什么?

Is there an easy way to find what the minimum required version for CMake should be?

有没有一种方便的方法来找到最低兼容的 CMake 版本应该是什么(除了用每个版本测试它)?我正在寻找一个工具来解析我的 CMakeLists.txt,找到我正在使用的所有功能,查找它们添加的 CMake 版本,并吐出最大值。快速浏览 cmake --help 并没有显示执行此操作的选项。有没有可以为我执行此操作的外部工具?

截至目前,还没有这样的工具。这是因为创建这样的工具存在许多问题。

最重要的是,CMake 从未做出任何向前兼容的承诺。使用 newer 版本的 CMake 创建的列表文件从未保证可以与 older 版本一起使用,无论出现什么 cmake_minimum_required 设置。这是由于几个因素造成的:添加了新功能、改进了查找模块和编译器检测中的逻辑等等。基本上任何不破坏旧代码,但使新代码更智能和健壮的东西,即使没有源代码更改。

因此,仅检查新功能(如生成器表达式)的工具会错过对整个系统其他部分的更改。

这意味着任何此类工具都必须非常紧密地模拟 CMake,以便更容易地自动化 运行 旧的 CMake 版本并测试构建。如果你觉得你需要这样做,你应该自己自动化。

退一步说,CMake 非常容易升级,您只需回避这个问题,就可以为自己和其他人避免很多像这样令人头疼的向后兼容性问题。使用最新版本,将其声明为最低版本并鼓励您的用户升级。在 Linux,Kitware 为 x86 和 arm 提供静态链接的可执行文件,除了 libc 之外不需要任何东西。我从未听说过这些可执行文件不工作。我在旧的 Raspberry Pis 上使用它们。我还没有看到任何远程有效的理由来支持超过一年左右的 CMake 版本。