Dieses Projekt demonstriert, wie man CMake mit der FetchContent-Funktion verwendet, um externe Bibliotheken einzubinden. Das Beispielprojekt lädt die Bibliothek CLI11 automatisch herunter und baut sie, falls sie noch nicht lokal verfügbar ist.
cmake_minimum_required(VERSION 3.13)
project(
Shoutout_from_Fetchcontent # Projektname
VERSION 1.0 # Projektversion
LANGUAGES CXX # Programmiersprache: C++
DESCRIPTION "This shouts out ;)" # Projektbeschreibung
HOMEPAGE_URL "http://vorlesung.nabla-b.engineering" # Projekt-URL
)
# FetchContent für externe Abhängigkeiten einbinden
include(FetchContent)
# Überprüfen, ob die Bibliothek CLI11 bereits vorhanden ist
find_package(CLI11 2 QUIET)
if(NOT CLI11_FOUND)
# Wenn nicht gefunden, die Bibliothek mit FetchContent deklarieren
fetchcontent_declare(
CLI11
GIT_REPOSITORY https://github.com/CLIUtils/CLI11 # GitHub-Repository von CLI11
GIT_TAG main # Branch oder Tag des Repos
)
fetchcontent_makeavailable(CLI11) # Lade und baue CLI11
endif()
# Erstelle das ausführbare Programm und binde CLI11 ein
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} CLI11::CLI11)
Definiert die minimale Version von CMake, die benötigt wird (hier 3.13 oder neuer).
- Initialisiert das Projekt mit einem Namen, einer Version, einer Beschreibung und einer Homepage-URL.
- Das Projekt verwendet C++ als Programmiersprache.
Aktiviert das FetchContent-Modul von CMake, das es ermöglicht, externe Bibliotheken direkt aus einem Repository zu laden und zu bauen.
- Versucht, die Bibliothek CLI11 in Version 2 zu finden.
- Die Option
QUIET
unterdrückt Fehlermeldungen, falls die Bibliothek nicht gefunden wird.
- Prüft, ob CLI11 nicht gefunden wurde.
- Falls die Bibliothek fehlt, wird sie mit FetchContent heruntergeladen und verfügbar gemacht.
- Deklariert, woher die Bibliothek zu holen ist (hier von CLI11 auf GitHub).
- Mit
GIT_TAG
wird festgelegt, welcher Branch oder Tag verwendet wird (hiermain
).
Lädt die deklarierte Bibliothek herunter und fügt sie zum Build-System hinzu.
- Erstellt das ausführbare Programm mit dem Namen des Projekts.
- Erwartet, dass der Quellcode in
src/main.cpp
liegt.
Verlinkt die Bibliothek CLI11 mit dem erstellten Programm.
Dein Projekt sollte folgende Struktur haben:
Shoutout_from_Fetchcontent/ │-- CMakeLists.txt # CMake-Konfigurationsdatei │-- src/ │ └── main.cpp # Quellcode für dein Hauptprogramm
- CMake in Version 3.13 oder neuer
- Ein C++-Compiler (z.B. GCC, Clang oder MSVC)
- Internetzugang, um die CLI11-Bibliothek herunterzuladen
Führe die folgenden Schritte aus, um das Projekt zu bauen:
# Erstelle ein Verzeichnis für die Builds
mkdir build
cd build
# Führe CMake aus, um das Projekt zu konfigurieren
cmake ..
# Baue das Projekt
cmake --build .
Nach dem erfolgreichen Build wird ein ausführbares Programm erstellt, das CLI11 verwendet. Dieses Beispiel zeigt, wie einfach sich externe Bibliotheken mithilfe von CMake FetchContent in ein Projekt integrieren lassen.