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

在成功将 CMake 用于 ITK 后,CMake 接着替换了 VTK 和 ParaView 中的构建系统。

  • VTK 和 ParaView 采用 CMake 带来了包括洛斯阿拉莫斯、桑迪亚和利弗莫尔在内的国家实验室的合作者和资金来源。
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 被添加到 CMake,由 ARL 资助

2011

ninja 生成器被添加到 CMake

2012

Modern CMake 由 Stephen Kelly 撰写

  • 综合的使用要求(由 Stephen Kelly 的 Modern CMake 发起)允许项目以一种 nice 的方式打包“如何使用我”(参考 VTK 于 2019 年重写其构建系统以“到处”使用它们)。
2016

LLVM 切换到 CMake,移除 autoconf

2017

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

2018

Craig Scott 撰写了《Professional CMake: A Practical Guide》。

2022

在 C++Now 会议上,Bryce Adelstein Lelbach 在其题为“What Belongs In The C++ Standard Library?”的演讲中将 CMake 称为标准构建系统。

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

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

为您构建的 CMake

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