支持一个项目多个cmake最低版本

Support multiple cmake minimum versions for one project

我有一个相当受欢迎的开源项目,它的最低 cmake 版本集相当旧(~2013 年 10 月)。

cmake_minimum_required(VERSION 2.8.12)

这对于支持各种各样的用户非常有用,但它使向我们的 cmake 构建添加新内容变得具有挑战性,因为我们无法在以后的 cmake 版本中使用任何新功能。这会导致复杂的 cmake 文件和更多的维护负担来模拟未来对 cmake 的改进。

我想为项目支持两个具有不同最低版本的 CMakeLists.txt 文件,一个是 2.8.12 版本的遗留文件,另一个是更高版本的 3.x ] 版本。有什么规范的方法可以做到这一点吗?看起来没有办法在项目的根目录下支持多个 CMakeFiles.txt

天真的方法是重命名遗留文件 CMakeFiles_Legacy.txt 并让依赖旧 cmakes 的用户自己手动切换 CMakeFiles.txt

tl;dr: 只是不支持旧版本。

CMake 的升级非常容易。从字面上看,每个 halfway-modern 开发平台都至少原生打包 CMake 3.16+,但 Windows 和 macOS 都领先于曲线,不断更新包含的版本。

Visual Studio 接收定期更新,2022 年包括 CMake 3.21。 Chocolatey 上的版本始终是最新的。

在 macOS 上,Homebrew 版本始终是最新的。

在 Debian 衍生产品上,Kitware 提供了一个始终保持最新状态的官方 APT 存储库。还有一个始终保持最新状态的 Snap 包。

在大多数其他 Linux 发行版中,可以直接从 Kitware 使用 official binaries,根本不需要 sudo 访问权限。他们有 x86_64 和 aarch64 二进制文件。二进制文件是静态链接的,只需要 libc6 作为依赖项。 Glibc 自 1997 年以来一直 ABI-stable。它将在您的系统上运行。 但即使不能,构建最新的 CMake 版本也不难。维护此类陈旧系统的用户不应该是您的责任。

(旁白:我写了整篇博客 post 关于这个... https://alexreinking.com/blog/how-to-use-cmake-without-the-agonizing-pain-part-1.html