Dieses Projekt erstellt eine statische Bibliothek, führt Tests aus und installiert die Bibliothek samt Header-Dateien in die Standardverzeichnisse unter Ubuntu mithilfe von CMake. Ein Beispielprogramm demonstriert, wie die installierte Bibliothek verwendet wird.
Das Projekt ist in folgende Verzeichnisse aufgeteilt:
StaticLibraryProject/
│-- CMakeLists.txt # Haupt-CMake-Konfigurationsdatei
│-- include/
│ └── StaticLib.h # Header-Datei der Bibliothek
│-- src/
│ └── StaticLib.cpp # Implementierung der Bibliothek
│-- tests/
│ │-- CMakeLists.txt # CMake für Tests
│ └── test_staticlib.cpp # Testdatei für die Library
│-- example/
│ │-- CMakeLists.txt # Eigenes CMake für das Beispielprogramm
│ └── main.cpp # Beispiel zur Nutzung der installierten Bibliothek
Definiert die Schnittstelle der statischen Bibliothek:
#ifndef STATIC_LIB_H
#define STATIC_LIB_H
class StaticLib {
public:
void sayHello() const;
};
#endif // STATIC_LIB_H
Implementiert die Methode der Bibliothek:
#include "StaticLib.h"
#include <iostream>
void StaticLib::sayHello() const {
std::cout << "Hello from Static Library!" << std::endl;
}
Testet die Funktionalität der Bibliothek:
#include "StaticLib.h"
#include <cassert>
#include <iostream>
int main() {
StaticLib lib;
lib.sayHello();
std::cout << "Test passed: sayHello() works correctly." << std::endl;
return 0;
}
cmake_minimum_required(VERSION 3.13)
project(StaticLibraryProject VERSION 1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Statische Bibliothek erstellen
add_library(StaticLib STATIC src/StaticLib.cpp)
# Header-Dateien der Bibliothek öffentlich verfügbar machen
target_include_directories(StaticLib PUBLIC include)
# Installationsanweisungen
install(TARGETS StaticLib ARCHIVE DESTINATION lib)
install(DIRECTORY include/ DESTINATION include)
# Tests aktivieren
enable_testing()
# Tests erstellen
add_executable(TestStaticLib tests/test_staticlib.cpp)
target_link_libraries(TestStaticLib StaticLib)
add_test(NAME RunStaticLibTests COMMAND TestStaticLib)
Verwendet die installierte Bibliothek:
cmake_minimum_required(VERSION 3.13)
project(StaticLibExample LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
# Finde die installierte Bibliothek
find_library(STATIC_LIB StaticLib PATHS /usr/local/lib)
# Beispielprogramm erstellen
add_executable(StaticLibExample main.cpp)
# Bibliothek und Header einbinden
target_include_directories(StaticLibExample PUBLIC /usr/local/include)
target_link_libraries(StaticLibExample ${STATIC_LIB})
Demonstriert die Verwendung der Bibliothek:
#include "StaticLib.h"
int main() {
StaticLib lib;
lib.sayHello();
return 0;
}
Erstelle ein Build-Verzeichnis und führe CMake aus, um das Projekt zu bauen:
cmake -B build
cmake --build build/
Führe die Tests aus, um die Bibliothek zu überprüfen:
ctest --test-dir build/
Erwartete Ausgabe:
Hello from Static Library!
Test passed: sayHello() works correctly.
Installiere die Bibliothek und die Header-Dateien in die Standardverzeichnisse:
sudo cmake --install build/
- Die statische Bibliothek wird nach
/usr/local/lib/libStaticLib.a
installiert. - Die Header-Dateien werden nach
/usr/local/include
installiert.
Wechsle in das example
-Verzeichnis und baue das Projekt:
cd ../example
cmake -B build && cmake --build build/
Starte das Beispielprogramm:
./StaticLibExample
Erwartete Ausgabe:
Hello from Static Library!
Dieses Projekt:
- Erstellt eine statische Bibliothek zur Wiederverwendung.
- Führt Tests automatisch nach dem Build-Prozess aus.
- Installiert die Bibliothek und die Header-Dateien in Systemverzeichnisse (
/usr/local/lib
und/usr/local/include
). - Zeigt mit einem Beispielprojekt, wie die Bibliothek in anderen Anwendungen verwendet werden kann.
Mit diesen Schritten kannst du deine eigene statische Bibliothek erstellen, testen und einfach wiederverwenden!