Skip to navigation
History of CMake
10.03.25
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. 2003 Mastering CMake: A Cross-Platform Build System was written by Ken Martin and Bill Hoffman (the book is now available open source); CMake is featured in Dr. Dobb’s Journal of Software Tools and Linux Journal. 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. 2007 An Open Source Approach to Developing Software in a Small Organization, written by Ken Martin and Bill Hoffman, was published in the IEEE Software Journal 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 2017 Microsoft Visual Studio introduces integrated support for CMake projects 2018 Professional CMake: A Practical Guide is written by Craig Scott 2019 The Qt Group switches to CMake 2020 CMake Presets are incorporated into Microsoft Visual Studio; ninja multi config is added to CMake; Ongoing project begins to add C++ 20 Modules to CMake with support for Bloomberg 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.
https://cmake.org/history
Reply
Anonymous
Information Epoch 1742011899
Write simple parts connected by clean interfaces.
Home
Notebook
Contact us