Einführung in CMake: Was es ist und warum man es braucht
\n\nCMake (Cross-Platform Make) ist ein leistungsstarkes, plattformübergreifendes Open-Source-System zur Automatisierung von Software-Builds. Im Gegensatz zu traditionellen Makefiles erstellt CMake ein Projekt nicht direkt, sondern generiert Build-Dateien für native Werkzeuge (Make, Ninja, Visual Studio, Xcode) auf der Grundlage einfacher Konfigurationsdateien namens CMakeLists.txt.
Warum CMake?
\n- \n
- Plattformunabhängigkeit: Derselbe Code kann ohne Konfigurationsänderungen unter Windows, Linux und macOS gebaut werden. \n
- Abhängigkeitsverwaltung: Integrierte Unterstützung zum Suchen und Einbinden externer Bibliotheken (Boost, OpenCV, Qt usw.). \n
- Flexibilität: Unterstützung verschiedener Projektgeneratoren (Visual Studio, Xcode, Ninja, Unix Makefiles). \n
- Modularität: Möglichkeit zur Erstellung von Bibliotheken (statisch und dynamisch), ausführbaren Dateien und Tests. \n
- IDE-Integration: Moderne IDEs (CLion, VS Code, Qt Creator) haben eine integrierte CMake-Unterstützung. \n
CMake ist zum De-facto-Standard für C++-Projekte geworden. Es wird von Giganten wie Google (TensorFlow, Chrome), Microsoft (VS Code), KDE, LLVM/Clang und vielen anderen verwendet.
\n\nInstallation von CMake
\n\nIm Gegensatz zu Python-Bibliotheken wird CMake nicht über pip installiert. Es ist eine eigenständige Anwendung. Betrachten wir die Installation für die wichtigsten Betriebssysteme:
\n\nWindows
\n- \n
- Laden Sie das Installationsprogramm von der offiziellen Website herunter (wählen Sie die Version für Windows – .msi oder .zip). \n
- Starten Sie die Installation. Aktivieren Sie unbedingt die Option "Add CMake to the system PATH for all users". \n
- Überprüfen Sie nach der Installation:
cmake --versionin der Eingabeaufforderung. \n
Linux (Ubuntu/Debian)
\nsudo apt update\nsudo apt install cmake\ncmake --version\n\nmacOS (Homebrew)
\nbrew install cmake\ncmake --version\n\nInstallationsprüfung
\nFühren Sie nach der Installation im Terminal aus:
\ncmake --version\n# Die Ausgabe sollte ähnlich sein wie:\n# cmake version 3.27.0\n\nSchnellstart: Erstes Projekt mit CMake
\n\nErstellen wir ein einfaches "Hello World"-Projekt mit CMake.
\n\nProjektstruktur
\nmy_project/\n├── CMakeLists.txt\n└── main.cpp\n\nDatei main.cpp
\n#include <iostream>\n\nint main() {\n std::cout << "Hello, CMake!" << std::endl;\n return 0;\n}\n\nDatei CMakeLists.txt
\ncmake_minimum_required(VERSION 3.10)\nproject(HelloWorld VERSION 1.0 LANGUAGES CXX)\n\nadd_executable(hello main.cpp)\n\nProjekt bauen
\nmkdir build\ncd build\ncmake ..\ncmake --build .\n./hello\n\nErklärung:
\n- \n
cmake_minimum_required— legt die minimale CMake-Version fest. \n project— definiert den Projektnamen und die Sprache (CXX für C++). \n add_executable— erstellt eine ausführbare Datei aus den Quelldateien. \n
Grundlegende CMake-Methoden und -Funktionen
\n\n1. cmake_minimum_required()
\nBeschreibung: Legt die minimale CMake-Version fest, die zum Bauen des Projekts erforderlich ist. Wenn die CMake-Version niedriger als angegeben ist, wird ein Fehler ausgegeben.
\nParameter:
\n- \n
VERSION— Version im Format major.minor[.patch[.tweak]] \n FATAL_ERROR— optional, löst einen schwerwiegenden Fehler bei Versionskonflikt aus \n
Beispiel:
\ncmake_minimum_required(VERSION 3.16 FATAL_ERROR)\n\n2. project()
\nBeschreibung: Definiert den Projektnamen und seine Parameter. Muss