CMake 创建于 2000 年,旨在满足为 Insight Toolkit (ITK)Visualization Toolkit (VTK) 提供强大、跨平台构建环境的需求。在过去二十年中,它不断发展,取得了许多改进和新功能。它持续得到强大的用户社区的支持,其中包括原始作者和首席架构师 Bill Hoffman,以及 Kitware 的内部专家。

时间线

2000

为美国国家医学图书馆 (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++ 封装到其他语言中。
2002

在 ITK 成功使用 CMake 后,CMake 继续取代了 VTK 和 ParaView 中的构建系统。

  • VTK 和 ParaView 采用 CMake 带来了来自国家实验室(包括洛斯阿拉莫斯、桑迪亚和利弗莫尔)的合作者和资金流。
2004

CMake 获得了美国国家医学影像计算联盟 (NA-MIC) 的大量开发资金。

  • CMake 逐渐被其他开源项目采用。
2006

KDE 切换到 CMake

  • KDE 开发者 Alexander Neundorf 是帮助 KDE 采用 CMake 的倡导者。
  • Kitware 努力在几周内创建了一个原型构建系统。
  • CMake 能够比他们之前使用的 scons 系统更快地构建更多的 KDE。
  • KDE 能够使用 CMake 快速将应用程序移植到 Windows 和 Apple。
  • CMake 获得了新功能,包括共享库版本控制和无需重新链接的安装 rpath 重写。
  • CMake 由所有主要的 Linux 发行版分发,以支持 KDE。

2008

LLVM 编译器的第一个 CMakeLists.txt

2009

ExternalProject 添加到 CMake,由 ARL 资助

2011

ninja 生成器添加到 CMake

2012

现代 CMake 由 Stephen Kelly 撰写

  • 综合使用要求,由 Stephen Kelly 的现代 CMake 启动,允许项目以一种很好的方式打包“如何使用我”(参见 VTK 在 2019 年重写构建系统以“无处不在”地使用它们)。
2016

LLVM 切换到 CMake,移除 autoconf

2017

Microsoft Visual Studio 引入了对 CMake 项目的集成支持

2018

专业 CMake:实用指南 由 Craig Scott 撰写

2022

Bryce Adelstein Lelbach 在他的 C++Now 会议演讲“C++ 标准库中包含什么?”中称 CMake 为标准构建系统。

  • Bryce 还担任标准 C++ 库演进组的主席。他的演讲指出我们实际上有一个标准构建系统!那就是 CMake。
2023

CMake 驱动编译器描述 C++20 模块依赖信息的标准格式。p1689 已由 Visual Studio、Clang 和 GCC 实现,并由 CMake 用于支持 C++ 20 模块的构建。

为您构建的 CMake

Kitware 可以与您合作开发一个根据您的需求量身定制的 CMake 软件构建系统。