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) 研究中心使用了十年的 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 的能力。
  • 所有主要的 Linux 发行版都分发 CMake 以支持 KDE。

2008

LLVM 编译器的第一个 CMakeLists.txt

2009

在 ARL 资助下,ExternalProject 被添加到 CMake 中

2011

ninja 生成器被添加到 CMake 中

2012

《Modern CMake》由 Stephen Kelly 编写

  • 由 Stephen Kelly 的《Modern CMake》开启的全面使用需求,允许项目以一种优雅的方式封装“如何使用我”(参见 2019 年 VTK 构建系统的重写,以在“任何地方”使用它们)。
2016

LLVM 切换到 CMake,移除了 autoconf

2017

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

2018

《Professional CMake: A Practical Guide》由 Craig Scott 编写

2022

Bryce Adelstein Lelbach 在 C++Now 大会的演讲“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 软件构建系统。