CMake statische und dynamische Bibliotheken erstellen?

Antwort

Um sowohl eine statische als auch eine dynamische (shared) Bibliothek mit CMake zu erstellen, kannst du die folgenden Schritte befolgen: 1. **CMakeLists.txt erstellen**: Erstelle eine Datei namens `CMakeLists.txt` in deinem Projektverzeichnis. 2. **CMake-Konfiguration**: Füge den folgenden Code in die `CMakeLists.txt` ein: ```cmake cmake_minimum_required(VERSION 3.10) project(MyLibrary) # Quellcode-Dateien set(SOURCES src/my_library.cpp # Füge hier weitere Quellcode-Dateien hinzu ) # Statische Bibliothek erstellen add_library(my_library_static STATIC ${SOURCES}) # Shared Bibliothek erstellen add_library(my_library_shared SHARED ${SOURCES}) # Optional: Installationsregeln install(TARGETS my_library_static my_library_shared DESTINATION lib) ``` 3. **Verzeichnisstruktur**: Stelle sicher, dass deine Verzeichnisstruktur wie folgt aussieht: ``` /dein_projekt ├── CMakeLists.txt └── src └── my_library.cpp ``` 4. **CMake ausführen**: Öffne ein Terminal und navigiere zu deinem Projektverzeichnis. Führe die folgenden Befehle aus: ```bash mkdir build cd build cmake .. make ``` 5. **Bibliotheken verwenden**: Nach dem Kompilieren findest du die statische Bibliothek `libmy_library_static.a` und die dynamische Bibliothek `libmy_library_shared.so` (oder `.dll` auf Windows) im `build`-Verzeichnis. Mit diesen Schritten kannst du sowohl statische als auch dynamische Bibliotheken in CMake erstellen.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie erstelle ich ein CLI in Python?

Um ein Command Line Interface (CLI) in Python zu erstellen, kannst du die Bibliothek `argparse` verwenden, die in der Standardbibliothek enthalten ist. Hier ist ein einfaches Beispiel, wie du ein CLI... [mehr]

Wie konfiguriere ich Include-Verzeichnisse in CMake, um Header-Dateien aus einem anderen Ordner einzubinden? Beispiel erforderlich.

Um Include-Verzeichnisse in CMake zu konfigurieren, kannst du die Funktion `include_directories()` oder die modernere Methode `target_include_directories()` verwenden. Hier ist ein einfaches Beispiel,... [mehr]