CMake fungiert als plattformübergreifender Metabuild-Generator für eigentliche Buildgeneratoren – wie beispielsweise Make oder Nmake. Dies bedeutet, dass in CMake-Scripts plattformübergreifende Build-Anweisungen geschrieben werden können, die dann wiederum von CMake verwendet werden um die eigentlichen – plattformspezifischen – Buildscripte zu generieren.
Bill Hoffman von Kitware nutzte neue und eigene Ideen vom pcmaker (einem vorherigen Buildsystem) mit Grundfunktionalitäten des GNU Build Systems, um Mitte 2000 die erste Version zu erstellen, die dann bis Anfang 2001 weiterentwickelt wurde. Danach entstanden viele Verbesserungen durch andere Entwickler, die CMake für ihre eigenen Projekte verwenden wollten.
sowie die Nachfolger von Mingw und MSYS, Mingw-w64 und MSYS2.
CMake überprüft dabei automatisch die Abhängigkeiten für C, C++, Fortran und Java und unterstützt parallele Builds.
Es werden viele Bibliotheken, wie z.B. SWIG, Boost und Qt durch die CMake-Skriptsprache unterstützt. Ab der Version 2.6 wird auch Cross Kompilation und cross-platform build unterstützt. Integriert sind Tools für Tests und release: DART, CDash, CTest und CPack.
Mit CPack ist es möglich, Installationspakete in folgenden Formaten zu erstellen: