Wenn Sie in C++ geschrieben haben, sind Sie wahrscheinlich auf CMake gestoßen. Und vielleicht hattest du einen Moment der Verzweiflung, als alles einfach wird nicht gesammelt. CMake ist ein mächtiges Werkzeug, aber seine Syntax und Struktur verursachen oft Schmerzen. Lassen Sie uns herausfinden, wie man CMake einrichtet einmal und richtig, um nicht mehr ins Chaos zurückzukehren 💡

🔰 Was ist CMake?
CMake ist ein Build-Generierungssystem. Es kompiliert den Code nicht direkt, sondern erstellt Dateien für die Zusammenstellung unter deinem System: Makefile, Ninja, Xcode oder Visual Studio.
✅ Plattformübergreifend
✅ Ermöglicht die Anpassung von Abhängigkeiten
✅ Vereinfacht die Zusammenstellung großer Projekte
✅ Kompatibel mit IDE und CI/CD
🧱 Grundstruktur des Projekts mit CMake
project-root/
├── CMakeLists.txt
├── src/
│ └── main.cpp
├── include/
│ └── mylib.hpp
├── CMakeLists.txt (внутри src/)📌 Stammverzeichnis CMakeLists.txt:
cmake_minimum_required(VERSION 3.15)
project(MyProject)
set(CMAKE_CXX_STANDARD 20)
add_subdirectory(src)📌 src/CMakeLists.txt:
add_executable(my_app main.cpp)
target_include_directories(my_app PRIVATE ../include)⚙️ Tipps zum schmerzfreien Einrichten von CMake
1. Verwenden Sie target_* anstelle von globalen Variablen
❌ Schlecht:
include_directories(./include)✅ Richtig:
target_include_directories(my_app PRIVATE ./include)2. Füge compile_commands.json hinzu
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)Hilft bei der automatischen Vervollständigung und Hervorhebung von Fehlern in VS Code und clangd.
3. Verwenden Sie immer out-of-source build
mkdir build && cd build
cmake ..
cmake --build .4. Verbinden Sie Bibliotheken von Drittanbietern richtig
Beispiel mit FetchContent:
include(FetchContent)
FetchContent_Declare(
json
URL https://github.com/nlohmann/json/releases/latest/download/json.hpp
)
FetchContent_MakeAvailable(json)
target_link_libraries(my_app PRIVATE nlohmann_json::nlohmann_json)🧪 Checkliste für ein gutes CMake-Projekt
✅ CMakeLists.txt nicht länger als 30 Zeilen
✅ Alle Abhängigkeiten durch
target_*✅ Debug/Release-Unterstützung
✅ Out-of-Source-Assembly
✅ Funktioniert im Terminal und in der IDE
📚 Möchten Sie tiefer in das Thema einsteigen?
Im Anhang Kodik Du findest detaillierte Lektionen zu CMake und C++, Schritt-für-Schritt-Übungen, Fehleranalyse und praktische Übungen direkt auf deinem Handy oder Browser.
Und wenn Sie über Neuigkeiten, neue Funktionen und nützliche Materialien informiert werden möchten, abonnieren Sie unseren Telegram-Kanal. Dort ist es gemütlich, geschäftlich und mit Liebe zum Code ❤️
