时间表
为美国国家医学图书馆 (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++ 包装到其他语言中。
在成功将 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 重写。
- CMake 由所有主要的 Linux 发行版分发,以支持 KDE。

An Open Source Approach to Developing Software in a Small Organization 由 Ken Martin 和 Bill Hoffman 撰写,发表在 IEEE Software Journal 上。
LLVM 编译器首次使用 CMakeLists.txt
ExternalProject 被添加到 CMake,由 ARL 资助
ninja 生成器被添加到 CMake
Modern CMake 由 Stephen Kelly 撰写
- 综合的使用要求(由 Stephen Kelly 的 Modern CMake 发起)允许项目以一种 nice 的方式打包“如何使用我”(参考 VTK 于 2019 年重写其构建系统以“到处”使用它们)。
LLVM 切换到 CMake,移除 autoconf
Microsoft Visual Studio 为 CMake 项目引入了集成支持
Craig Scott 撰写了《Professional CMake: A Practical Guide》。
CMake Presets 被集成到 Microsoft Visual Studio;ninja multi config 被添加到 CMake;与 Bloomberg 合作,CMake 开始进行添加 C++ 20 Modules 的持续项目
在 C++Now 会议上,Bryce Adelstein Lelbach 在其题为“What Belongs In The C++ Standard Library?”的演讲中将 CMake 称为标准构建系统。
- Bryce 还担任了标准 C++ 库演进小组的主席。他的演讲指出,我们实际上已经有了一个标准构建系统!那就是 CMake。
CMake 驱动着编译器描述 C++20 模块依赖信息的标准格式。p1689 已被 Visual Studio、Clang 和 GCC 实现,并被 CMake 用于支持 C++ 20 模块的构建。