- Einführung in CMake
- Was ist CMake: Erklärung der Funktion und Bedeutung von CMake in der Softwareentwicklung.
- Vorteile von CMake: Diskussion der Vorteile von CMake gegenüber anderen Build-Systemen und Makefiles.
- Installation und Einrichtung
- Installation von CMake: Schritt-für-Schritt-Anleitung zur Installation von CMake auf verschiedenen Betriebssystemen (Windows, macOS, Linux).
- Einrichtung der Entwicklungsumgebung: Konfiguration der Entwicklungsumgebung und Integration von CMake in gängige IDEs wie Visual Studio, CLion und VS Code.
- Grundlegende CMake-Syntax und -Befehle
- Erstellen einer einfachen CMakeLists.txt: Einführung in die grundlegenden Befehle und die Struktur einer CMakeLists.txt-Datei.
- Verstehen von Zielen und Quellen: Definition von Zielen (Targets) und Hinzufügen von Quell- und Header-Dateien zum Build.
- Projektstruktur und Organisation
- Organisieren von Projekten: Best Practices zur Organisation von Projekten mit CMake, einschließlich der Strukturierung von Quellverzeichnissen und modularen CMakeLists.txt-Dateien.
- Einfache Projekte und Hierarchien: Erstellung und Verwaltung einfacher Projekte und hierarchischer Projekte mit mehreren Unterverzeichnissen.
- Erstellung von Bibliotheken
- Statische und dynamische Bibliotheken: Anleitung zur Erstellung statischer (STATIC) und dynamischer (SHARED) Bibliotheken mit CMake.
- Nutzung von Bibliotheken: Erklärung, wie man Bibliotheken in Projekten einbindet und nutzt, einschließlich der Nutzung von target_link_libraries().
- Konfigurationsoptionen und Compiler-Einstellungen
- Festlegen von Build-Optionen: Verwendung von option() und set() zur Definition und Konfiguration von Build-Optionen und -Variablen.
- Compiler-Einstellungen: Konfiguration von Compiler-Flags und Optimierungen mit target_compile_options() und target_compile_definitions().
- Externe Abhängigkeiten und Paketverwaltung
- Einbindung externer Bibliotheken: Nutzung von find_package() und ExternalProject_Add() zur Integration externer Bibliotheken und Projekte.
- Paketverwaltung mit CMake: Einführung in die Verwaltung von Abhängigkeiten mit FetchContent und anderen CMake-Modulen.
- Plattformübergreifende Entwicklung
- Plattformübergreifende Builds: Best Practices zur Erstellung plattformübergreifender CMake-Projekte, einschließlich der Nutzung von Generatoren und plattformspezifischen Einstellungen.
- Verwendung von Toolchains: Anleitung zur Erstellung und Nutzung von Toolchain-Dateien für Cross-Compiling und spezielle Build-Umgebungen.
- Testing und Continuous Integration (CI)
- Einführung in CTest: Nutzung von CTest zur Erstellung und Ausführung von Unit-Tests und Integrationstests.
- Integration mit CI-Tools: Anleitung zur Integration von CMake-Projekten in CI/CD-Pipelines mit Tools wie Jenkins, GitHub Actions und GitLab CI.
- Erstellung und Verteilung von Paketen
- Erstellen von Installationspaketen: Nutzung von CMake-Befehlen zur Erstellung von Installationspaketen für verschiedene Plattformen.
- Distribution und Paketverwaltung: Einführung in die Distribution von CMake-Projekten und die Nutzung von Paketmanagern wie Conan und vcpkg.
LernzieleAm Ende des Seminars sind die Teilnehmenden in der Lage, eigene CMake-Projekte zu erstellen, zu konfigurieren und zu verwalten sowie fortgeschrittene CMake-Konzepte anzuwenden.
ZielgruppenDieses Seminar richtet sich an Softwareentwickler, Build-Manager und Systemadministratoren, die CMake zur Erstellung, Konfiguration und Verwaltung von Build-Prozessen nutzen möchten. Grundlegende Kenntnisse in C++ und Build-Systemen sind hilfreich, aber nicht zwingend erforderlich.