CMake was created in 2000 in response to the need for a powerful, cross-platform build environment for The Insight Toolkit (ITK) and the Visualization Toolkit (VTK). It has evolved over the last two decades with many improvements and new features. It continues to be supported by a strong user community, including original author and lead architect, BIll Hoffman, and the in-house experts at Kitware.

Timeline

2000

CMake is created for the National Library of Medicine’s (NLM) Insight Toolkit Project

  • NLM put Kitware on a team of three commercial companies and three universities to create an open source C++ toolkit for segmentation and registration of medical data. Kitware was awarded this because of the success of VTK.
  • The contract allowed for innovation, only specifying that the C++ toolkit had to be portable to Unix, Windows, and Mac. After a decade of using autotools and gmake at GE Research, Bill Hoffman felt that a new tool for building C++ was needed. The tool had some basic rules:
    • Support native build tools like the Visual Studio IDE
    • One input file to build on all supported platforms
    • Depend only on a C++ compiler so that it is easy to port and bootstrap on new systems
    • Support for code generators so tools can be used to wrap C++ into other languages.
2002

After successfully using CMake for ITK, CMake went on to replace the build system in VTK and ParaView.

  • The adoption of CMake by VTK and ParaView brought in collaborators and funding streams from national labs, including Los Alamos, Sandia, and Livermore.
2004

CMake received substantial development funding from The National Alliance for Medical Image Computing (NA-MIC).

  • Slowly, CMake started to be adopted by other open source projects.
2006

KDE switches to CMake

  • KDE developer Alexander Neundorf was the champion that helped KDE adopt CMake.
  • Kitware worked hard to create a prototype build system in a few short weeks.
  • CMake was able to quickly build more of KDE than the scons system they were using previously.
  • KDE was able to port applications to Windows and Apple very quickly with CMake.
  • CMake got new features, including shared library versioning and installation rpath re-writes without relinking.
  • CMake was distributed by all major linux distributions to support KDE.

2008

First CMakeLists.txt for the LLVM Compiler

2009

ExternalProject is added to CMake ARL funded

2011

ninja generator is added to CMake

2012

Modern CMake is written by Stephen Kelly

  • Comprehensive usage requirements, started by Stephen Kelly’s Modern CMake, allowed projects to package up “how to use me” in a nice way (cf. VTK’s build system rewrite to use them “everywhere” in 2019).
2016

LLVM switches to CMake, removing autoconf

2018

Professional CMake: A Practical Guide is written by Craig Scott

2022

CMake is called the standard build system by Bryce Adelstein Lelbach during his C++Now conference talk “What Belongs In The C++ Standard Library?”

  • Bryce also served as the chair of the Standard C++ Library Evolution group. His talk stated that we actually have a standard build system! It’s CMake.
2023

CMake drives the standards format for compilers to describe C++20 module dependency information. p1689 has been implemented by Visual Studio, Clang, and GCC, and is used by CMake to support the building of C++ 20 modules.

A CMake Built for You

Kitware can work with you to develop a CMake software build system that is tailored to your requirements.