C++ Academy · Lektion

CMake-Projektstruktur und CMakeLists.txt

Strukturieren Sie Quellbäume und schreiben Sie grundlegende CMakeLists-Dateien.

Lektion 1 von 414 Schritte

CMake-Projektstruktur und CMakeLists.txt ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum CMake?

CMake ist der De-facto-Standard für Buildsystem-Generatoren in C++. Es erzeugt aus einer einzigen Beschreibung Projektdateien für Make, Ninja, Visual Studio und Xcode.

Minimale CMakeLists.txt

Die kleinste sinnvoll nutzbare CMakeLists.txt für eine einzelne ausführbare Datei.

cmake_minimum_required(VERSION 3.20)
project(MyApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(myapp main.cpp)

Out-of-Source-Builds

Erstellen Sie Builds immer in einem separaten Verzeichnis – so bleibt der Quellbaum sauber.

# from project root
cmake -B build
cmake --build build

Standard-Projektstruktur

Eine übersichtliche Struktur:

  • CMakeLists.txt
  • src/ – Quelldateien
  • include/ – öffentliche Header
  • tests/ – Tests
  • third_party/ – gebündelte Abhängigkeiten

Unterverzeichnisse hinzufügen

Beziehen Sie Unterverzeichnisse mit einer eigenen CMakeLists.txt rekursiv ein.

# top-level
add_subdirectory(src)
add_subdirectory(tests)

Variablen und Properties

Setzen Sie Variablen mit set. Lesen Sie sie mit ${var} aus. Häufig verwendete Variablen sind CMAKE_BUILD_TYPE und CMAKE_CXX_FLAGS.

set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)

Dateien dynamisch finden

Verwenden Sie file(GLOB ...) für schnelle Prototypen. Listen Sie in Produktionsprojekten die Quelldateien explizit auf, damit CMake erneut ausgeführt wird, wenn Dateien hinzukommen.

# Discouraged for production
file(GLOB SOURCES "src/*.cpp")

# Preferred
add_executable(myapp src/main.cpp src/util.cpp)

Build-Konfigurationen

Häufig verwendete Konfigurationen sind Debug, Release, RelWithDebInfo und MinSizeRel. Setzen Sie sie mit -DCMAKE_BUILD_TYPE=Release.

cmake -B build -DCMAKE_BUILD_TYPE=Release

Compiler-Warnungen

Aktivieren Sie Warnungen als Target-Properties – so bleiben sie compilerübergreifend portabel.

target_compile_options(myapp PRIVATE
    $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
    $<$<CXX_COMPILER_ID:MSVC>:/W4>
)

Moderner CMake-Stil

Bevorzugen Sie target-basierte Befehle (target_*) gegenüber globalen Befehlen. Dadurch werden Properties sauber auf bestimmte Targets beschränkt.

CMakePresets.json (CMake 3.19+)

Definieren Sie wiederverwendbare Konfigurationen in CMakePresets.json – gemeinsam für alle Teammitglieder.

Projekt installieren

Verwenden Sie install-Befehle, um Binärdateien, Bibliotheken und Header in Installationspfade zu kopieren.

install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)

Kurze Überprüfung

Welches Verzeichnismuster wird beim Ausführen von CMake empfohlen?

Zusammenfassung

CMake ist der Standard für C++-Buildsystem-Generatoren. Schreiben Sie eine CMakeLists.txt, erstellen Sie den Build außerhalb des Quellverzeichnisses und verwenden Sie target-basierte Befehle. Nutzen Sie Presets für gemeinsam verwendete Konfigurationen und Properties für Compiler-Flags.

Kostenlos starten

Lerne C++ mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
51
Lektionen
203

Häufig gestellte Fragen

Ist die Lektion „CMake-Projektstruktur und CMakeLists.txt“ kostenlos?

Ja — der vollständige Text von „CMake-Projektstruktur und CMakeLists.txt“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CMake-Projektstruktur und CMakeLists.txt“?

Strukturieren Sie Quellbäume und schreiben Sie grundlegende CMakeLists-Dateien. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „CMake-Projektstruktur und CMakeLists.txt“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. CMake-Projektstruktur und CMakeLists.txt
  2. Targets, Linking und Sichtbarkeit: PUBLIC, PRIVATE
  3. Abhängigkeiten mit vcpkg und Conan verwenden
  4. IDE-Dateien und plattformübergreifende Builds erzeugen
← Zurück zu C++ Academy