时间线
为美国国家医学图书馆 (NLM) 的 Insight Toolkit 项目创建 CMake
- NLM 委派 Kitware 组建了一支由三家商业公司和三所大学组成的团队,旨在创建一个用于医学数据分割和配准的开源 C++ 工具包。Kitware 之所以获选,是因为 VTK 的成功。
- 该合同允许创新,仅规定 C++ 工具包必须能在 Unix、Windows 和 Mac 上移植。在通用电气 (GE) 研究中心使用了十年的 autotools 和 gmake 后,Bill Hoffman 认为需要一种新的 C++ 构建工具。该工具遵循一些基本规则:
- 支持原生构建工具,如 Visual Studio IDE
- 使用单一输入文件即可在所有支持的平台上进行构建
- 仅依赖 C++ 编译器,以便于在新系统上进行移植和引导
- 支持代码生成器,以便将 C++ 封装成其他语言
在成功将 CMake 用于 ITK 后,CMake 又取代了 VTK 和 ParaView 中的构建系统。
- VTK 和 ParaView 对 CMake 的采用,带来了来自洛斯阿拉莫斯、桑迪亚和利弗莫尔等国家实验室的合作者和资金流。
《Mastering CMake: A Cross-Platform Build System》由 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 组件。
- 借助 CMake,KDE 能够非常快速地将应用程序移植到 Windows 和 Apple 平台。
- CMake 获得了新功能,包括共享库版本控制和无需重新链接即可重写安装 rpath 的能力。
- 所有主要的 Linux 发行版都分发 CMake 以支持 KDE。

Ken Martin 和 Bill Hoffman 撰写的《An Open Source Approach to Developing Software in a Small Organization》在 IEEE Software 期刊上发表。
LLVM 编译器的第一个 CMakeLists.txt
在 ARL 资助下,ExternalProject 被添加到 CMake 中
ninja 生成器被添加到 CMake 中
《Modern CMake》由 Stephen Kelly 编写
- 由 Stephen Kelly 的《Modern CMake》开启的全面使用需求,允许项目以一种优雅的方式封装“如何使用我”(参见 2019 年 VTK 构建系统的重写,以在“任何地方”使用它们)。
LLVM 切换到 CMake,移除了 autoconf
Microsoft Visual Studio 引入了对 CMake 项目的集成支持
《Professional CMake: A Practical Guide》由 Craig Scott 编写
CMake Presets 被合并进 Microsoft Visual Studio;ninja 多配置生成器被添加到 CMake;开始进行为 CMake 添加 C++20 模块支持的持续项目,并获得 Bloomberg 的支持
Bryce Adelstein Lelbach 在 C++Now 大会的演讲“What Belongs In The C++ Standard Library?”中称 CMake 为标准构建系统。
- Bryce 还是标准 C++ 库进化组的主席。他的演讲指出,我们实际上已经拥有了一个标准构建系统!那就是 CMake。
CMake 推动了编译器描述 C++20 模块依赖信息的标准格式。p1689 已被 Visual Studio、Clang 和 GCC 实现,并被 CMake 用于支持构建 C++20 模块。