CMake als Buildsystem

Unter Linux ist autotools der Standard, wenn es darum geht, Anwendungen aus einem Source-Tarball zu kompilieren. Weit weniger bekannt ist CMake, das allerdings einige Vorteile bietet.
CMake selbst ist eigentlich kein Buildsystem. Es erstellt lediglich für andere Buildsysteme Projekt-Dateien. Unterstützt werden dabei Makefiles, Visual Studio, Xcode und etliche mehr. Wer z.B. primär autotools verwendet, aber parellel dazu Visual Studio-Projektdateien anbietet, spart sich so, diese bei Änderungen nachzupflegen.
Bei CMake funktioniert “make -j” über Verzeichnisgrenzen hinweg, wodurch die Buildzeit verkürzt wird. Der Effekt ist besonders spürbar, wenn das Projekt viele Unterverzeichnisse mit jeweils nur wenigen Dateien beinhaltet. Mit autotools geht “make” jedes Verzeichnis einzeln durch und wartet, bis das jeweilige Verzeichnis fertig-gebuildet ist.
CMake liefert für viele Libraries eigene Scripts mit, die dabei helfen, diese in das eigene Projekt zu integrieren. Für autotools gibt es zwar etwas ähnliches (GNU Autoconf Archive), aber die Qualität dieser Scripts lässt zu wünschen übrig. Manche der Scripts funktionieren z.B. mit den Library-Pfaden von neueren Debian-Versionen (Stichwort: Multiarch) nicht mehr.
Nicht zuletzt ist die Syntax von CMake deutlich eingängiger und einfacher als die übliche Mischung aus Shell-Script-Schnipseln und M4-Makros bei autotools.
Als erste Anlaufstelle für autotools-geplagte Entwickler bietet sich die CMake-Dokumentation an, in der detailliert alle Befehle erklärt werden.