Wie kann ich externe Bibliotheken in CLion korrekt einbinden?

Melden
  1. Grundlagen zum Einbinden externer Bibliotheken in CLion
  2. Einbinden systemweit installierter Bibliotheken
  3. Einbinden von Bibliotheken, die man lokal oder als Quellcode nutzt
  4. Besonderheiten bei dynamischen Bibliotheken und Laufzeit
  5. Hinweis zu CMake und IDE-Synchronisation
  6. Fazit

Grundlagen zum Einbinden externer Bibliotheken in CLion

CLion ist eine leistungsstarke IDE, die hauptsächlich mit CMake als Build-System arbeitet. Das bedeutet, dass eine korrekte Einbindung externer Bibliotheken meist über Anpassungen an der CMake-Konfigurationsdatei CMakeLists.txt erfolgt. Je nachdem, ob es sich um eine systemweit installierte Bibliothek, eine Bibliothek in einem speziellen Verzeichnis oder eine selbst kompilierte externe Bibliothek handelt, variiert die Vorgehensweise leicht. Grundsätzlich musst du jedoch immer sicherstellen, dass der Compiler weiß, wo er die Header-Dateien findet, und der Linker weiß, wo die eigentlichen Bibliotheken liegen.

Einbinden systemweit installierter Bibliotheken

Wenn die gewünschte Bibliothek bereits auf deinem System installiert ist, kannst du sie in CMake meist mit dem Befehl find_package() suchen lassen. Beispielsweise unterstützt CMake viele gängige Bibliotheken wie Boost, OpenCV, Qt oder SDL mit eigenen Find-Modulen. Du fügst in deiner CMakeLists.txt einen Eintrag wie find_package(Boost REQUIRED) hinzu, was CMake veranlasst, nach Boost zu suchen und alle notwendigen Variablen zu definieren.

Anschließend kannst du die gefundenen Bibliotheken mit target_include_directories() für die Header und target_link_libraries() für die Linker-Anweisungen zu deinem Ziel (beispielsweise ein Executable oder eine Library) hinzufügen. Ein Beispiel sieht so aus:

find_package(Boost REQUIRED COMPONENTS filesystem)target_include_directories(mein_programm PRIVATE ${Boost_INCLUDE_DIRS})target_link_libraries(mein_programm PRIVATE ${Boost_LIBRARIES})

Dadurch sorgst du dafür, dass beim Bauen deines Programms die entsprechenden Header gefunden werden und du am Ende eine ausführbare Datei erhältst, die mit den externen Boost-Bibliotheken gelinkt ist.

Einbinden von Bibliotheken, die man lokal oder als Quellcode nutzt

Wenn du eine Bibliothek hast, die du selbst mitlieferst oder aus dem Quellcode buildest, kannst du sie beispielsweise als Unterordner in dein Projekt aufnehmen. Dann kannst du mittels add_subdirectory() diese Bibliothek in dein Projekt einbinden. Falls die Bibliothek bereits als vorgefertigte statische oder dynamische Library vorliegt, kannst du einfach den Pfad zu den Headern und der Library angeben.

Ein einfaches Beispiel, wenn die Header im Ordner external/mylib/include und die kompilierte Bibliothek in external/mylib/lib/libmylib.a liegen:

target_include_directories(mein_programm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/external/mylib/include)

target_link_libraries(mein_programm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/external/mylib/lib/libmylib.a)

target_link_libraries(mein_programm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/external/mylib/lib/libmylib.a)

Wichtig ist hier, dass du den korrekten absoluten oder relativen Pfad verwendest. Wenn die Bibliothek nicht statisch, sondern dynamisch ist, musst du zusätzlich sicherstellen, dass das System die DLL- oder .so-Datei zur Laufzeit findet.

Besonderheiten bei dynamischen Bibliotheken und Laufzeit

Bei dynamischen Bibliotheken (unter Windows .dll, unter Linux .so, macOS .dylib) musst du nicht nur beim Linken die passende Bibliothek angeben, sondern auch zur Laufzeit muss dein Programm wissen, wo diese Dateien liegen. Üblicherweise sollten sich diese im Standard-Suchpfad des Systems befinden, oder man muss die Umgebungsvariable PATH (Windows) oder LD_LIBRARY_PATH beziehungsweise DYLD_LIBRARY_PATH (Linux/macOS) anpassen.

Alternativ kannst du in CLion unter den Run-Konfigurationen Umgebungsvariablen einrichten oder ein Skript ausführen lassen, das diese Pfade entsprechend setzt.

Hinweis zu CMake und IDE-Synchronisation

Nachdem du Änderungen an der CMakeLists.txt vorgenommen hast, solltest du in CLion die CMake-Projekte erneut bauen oder zumindest neu laden. CLion bietet dafür einen Button Reload Changes in CMakeLists.txt an. Nur so erkennen der Editor und der Code-Analyzer die neuen Include-Pfade und Linker-Einstellungen korrekt. Ansonsten bekommst du möglicherweise Fehlermeldungen zu nicht gefundenen Headern oder fehlenden Symbolen.

Fazit

Das Einbinden externer Bibliotheken in CLion erfolgt über Anpassungen an der CMakeLists.txt. Entscheidend ist die korrekte Verwendung von find_package() für systemweit verfügbare Bibliotheken oder target_include_directories() und target_link_libraries() für lokale bzw. selbst verwaltete Bibliotheken. Dabei musst du auf die Pfade zu Headern und Bibliotheken achten und sicherstellen, dass dynamische Bibliotheken auch zur Laufzeit gefunden werden. Nach der Anpassung der CMake-Konfiguration muss das Projekt in CLion neu geladen werden, damit alle Änderungen wirksam werden.

0

Kommentare