为满足 洞察工具包 (ITK)可视化工具包 (VTK)对功能强大的 cross-platform 构建环境的需求,CMake于2000年诞生。在过去的二十年中,它随着许多改进和新功能不断发展。它继续得到强大的用户社区的支持,其中包括原始作者和首席架构师 BIll Hoffman 以及 Kitware 的内部专家。

时间表

2000

CMake 为美国国立医学图书馆 (NLM) 的 洞察工具包项目创建

  • NLM 将Kitware 与三家商业公司和三所大学组成一个团队,创建一个开放源码的 C++ 工具包,用于医学数据的分割和注册。Kitware 因 VTK 的成功而获得了该项目。
  • 该合同允许创新,只规定 C++ 工具包必须可移植到 Unix、Windows 和 Mac。在 GE 研究公司使用 autotools 和 gmake 十年后,Bill Hoffman 认为需要一种用于构建 C++ 的新工具。该工具有一些基本规则
    • 支持本地构建工具,如 Visual Studio IDE
    • 一个输入文件在所有支持的平台上进行构建
    • 仅依赖于 C++ 编译器,以便在新的系统上轻松移植和启动
    • 支持代码生成器,以便使用工具将 C++ 包装到其他语言中。
2002

在成功地将 CMake 用于 ITK 后,CMake 继续替代 VTK 和 ParaView 中的构建系统。

  • VTK 和 ParaView 采用 CMake 引入了合作者和来自 Los Alamos、Sandia 和 Livermore 等国家实验室的资金来源。
2004

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

  • 慢慢地,CMake 开始被其他开源项目采用。
2006

KDE 切换到 CMake

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

2008

第一个适用于 LLVM 编译器的 CMakeLists.txt

2009

ExternalProject 被添加到经过 ARL 资助的 CMake

2011

ninja 生成器被添加到 CMake

2012

Modern CMake由 Stephen Kelly 撰写

  • 从 Stephen Kelly 的 Modern 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 软件构建系统。