CMake – der Standard-Build-Generator für C und C++
CMake ist kein Compiler, sondern ein Build-System-Generator: Aus einer plattformunabhängigen Beschreibung (CMakeLists.txt) erzeugt es Makefiles, Ninja-Dateien oder Projektdateien für Visual Studio und Xcode. Damit lässt sich derselbe Quellcode auf Linux, macOS und Windows bauen – die Grundlage fast aller großen C/C++-Projekte, von LLVM bis zu Qt.
Die wichtigsten CMake-Befehle
cmake -S . -B build– konfiguriert das Projekt: Quellverzeichnis-S, Build-Verzeichnis-B.cmake --build build– baut das Projekt im konfigurierten Verzeichnis.cmake --build build --target install– baut und installiert ein Ziel.cmake -DCMAKE_BUILD_TYPE=Release -S . -B build– setzt Konfigurationsvariablen.cmake -G Ninja -S . -B build– wählt den Generator (hier Ninja, deutlich schneller als Make).ctest --test-dir build– führt registrierte Tests aus.cpack– erzeugt Installationspakete (deb, rpm, zip, DMG).cmake --install build --prefix /usr/local– installiert ohne Build-Schritt.
Minimales CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(HalloWelt C)
add_executable(hallo main.c)
target_compile_features(hallo PRIVATE c_std_11)
cmake_minimum_required– legt die minimale CMake-Version fest.project– Projektname und Sprachen (C, CXX, Fortran …).add_executable/add_library– definiert Build-Ziele.target_link_libraries– verknüpft Ziele und Bibliotheken.find_package– findet externe Pakete (z. B.find_package(OpenSSL REQUIRED)).
Praxis-Tipps
- Out-of-Source-Builds: Immer in ein separates
build/-Verzeichnis bauen – nie im Quellbaum. Aufräumen =rm -rf build. - Presets:
CMakePresets.jsonspeichert häufige Konfigurationen (cmake --preset release). - Ninja: Der Generator
Ninjabaut parallel und ist deutlich schneller als Make – Standard bei modernen Projekten. - Cache:
cmake --build build --target helpzeigt alle Ziele;cmake-guibietet eine grafische Konfigurationsoberfläche.
Weiterführend: C und C++: Schnellreferenz und Kompilieren einfach erklärt.