时间线
为美国国家医学图书馆 (NLM) 的 Insight Toolkit 项目创建 CMake
- NLM 让 Kitware 加入了一个由三家商业公司和三所大学组成的团队,共同创建一个用于医学数据分割和配准的开源 C++ 工具包。Kitware 因 VTK 的成功而获得了该项目。
- 合同允许创新,只规定 C++ 工具包必须能够移植到 Unix、Windows 和 Mac。在 GE Research 使用 autotools 和 gmake 十年后,Bill Hoffman 认为需要一个新的工具来构建 C++。该工具有一些基本规则:
- 支持原生构建工具,例如 Visual Studio IDE
- 一个输入文件即可在所有支持的平台上构建
- 仅依赖 C++ 编译器,以便于在新的系统上移植和引导
- 支持代码生成器,以便工具可以将 C++ 封装到其他语言中。
在 ITK 成功使用 CMake 后,CMake 继续取代了 VTK 和 ParaView 中的构建系统。
- VTK 和 ParaView 采用 CMake 带来了来自国家实验室(包括洛斯阿拉莫斯、桑迪亚和利弗莫尔)的合作者和资金流。
精通 CMake:跨平台构建系统 由 Ken Martin 和 Bill Hoffman 撰写(该书现已开源提供);CMake 在 Dr. Dobb’s Journal of Software Tools 和 Linux Journal 中都有介绍。
CMake 获得了美国国家医学影像计算联盟 (NA-MIC) 的大量开发资金。
- CMake 逐渐被其他开源项目采用。
- KDE 开发者 Alexander Neundorf 是帮助 KDE 采用 CMake 的倡导者。
- Kitware 努力在几周内创建了一个原型构建系统。
- CMake 能够比他们之前使用的 scons 系统更快地构建更多的 KDE。
- KDE 能够使用 CMake 快速将应用程序移植到 Windows 和 Apple。
- CMake 获得了新功能,包括共享库版本控制和无需重新链接的安装 rpath 重写。
- CMake 由所有主要的 Linux 发行版分发,以支持 KDE。
小型组织中开发软件的开源方法,由 Ken Martin 和 Bill Hoffman 撰写,发表在 IEEE Software Journal 上
LLVM 编译器的第一个 CMakeLists.txt
ExternalProject 添加到 CMake,由 ARL 资助
ninja 生成器添加到 CMake
现代 CMake 由 Stephen Kelly 撰写
- 综合使用要求,由 Stephen Kelly 的现代 CMake 启动,允许项目以一种很好的方式打包“如何使用我”(参见 VTK 在 2019 年重写构建系统以“无处不在”地使用它们)。
LLVM 切换到 CMake,移除 autoconf
Microsoft Visual Studio 引入了对 CMake 项目的集成支持
专业 CMake:实用指南 由 Craig Scott 撰写
CMake 预设集成到 Microsoft Visual Studio 中;ninja 多配置添加到 CMake;正在进行的项目开始将 C++ 20 模块添加到 CMake 中,并支持 Bloomberg
Bryce Adelstein Lelbach 在他的 C++Now 会议演讲“C++ 标准库中包含什么?”中称 CMake 为标准构建系统。
- Bryce 还担任标准 C++ 库演进组的主席。他的演讲指出我们实际上有一个标准构建系统!那就是 CMake。
CMake 驱动编译器描述 C++20 模块依赖信息的标准格式。p1689 已由 Visual Studio、Clang 和 GCC 实现,并由 CMake 用于支持 C++ 20 模块的构建。