Bill Hoffman z Kitware, główny twórca CMake, inspirował się częściowo wcześniejszym projektem pcmaker autorstwa Ken Martina, dodając jednak sporo własnych pomysłów oraz idei zaczerpniętych z Autotools. Pierwsza implementacja powstała w połowie roku 2000, natomiast od następnego roku projekt przeżywał gwałtowny rozwój. Kolejne funkcjonalności były opracowywane przez programistów, którzy adaptowali CMake na potrzeby swoich własnych projektów i rozwiązywali napotykane tam problemy.
Możliwości niezależność od platformy sprzętowej, systemu operacyjnego i kompilatora, obsługa złożonych struktur katalogowych, kompilacja skrośna, możliwość kompilowania w oddzielnym katalogu (out-of-source build, pliki wynikowe nie mieszają się ze źródłami), wsparcie dla testów jednostkowych, mechanizm wykrywania zależności i bibliotek zewnętrznych.
Elementy składowe Język skryptowy Głównym elementem składowym CMake jest prosty język skryptowy, w którym tworzone są pliki CMakeLists.txt umieszczane w katalogach ze źródłami projektu. Służy on do definiowania reguł budowania opisujących m.in. jakie pliki wynikowe powinny powstać w wyniku kompilacji, jak połączyć je z zewnętrznymi bibliotekami oraz jak je zainstalować.