add_library¶

Normal Libraries¶

add_library(<name> )

Fügt ein Bibliotheksziel mit dem Namen <name> hinzu, das aus den im Befehlsaufruf aufgelisteten Quelldateien gebaut werden soll. (Die Quelldateien können hier weggelassen werden, wenn sie später mit target_sources() hinzugefügt werden.) <name>entspricht dem logischen Zielnamen und muss innerhalb eines Projekts global eindeutig sein. Der tatsächliche Dateiname der erstellten Bibliothek wird auf der Grundlage von Konventionen der nativen Plattform gebildet (wie lib<name>.a oder<name>.lib).

STATIC, SHARED oder MODULE kann angegeben werden, um den Typ der zu erstellenden Bibliothek zu spezifizieren. STATIC Bibliotheken sind Archive von Objektdateien zur Verwendung beim Linken anderer Ziele. SHARED Bibliotheken werden dynamisch gelinkt und zur Laufzeit geladen. MODULE Bibliotheken sind Plugins, die nicht in andere Targets gelinkt werden, sondern dynamisch zur Laufzeit mit dlopen-ähnlicher Funktionalität geladen werden können. Wenn kein Typ explizit angegeben wird, ist derTyp STATIC oder SHARED, je nachdem, ob der aktuelle Wert derVariablen BUILD_SHARED_LIBS ON ist. Für SHARED– und MODULE-Bibliotheken wird die POSITION_INDEPENDENT_CODEZiel-Eigenschaft automatisch auf ON gesetzt.

Eine SHARED– oder STATIC-Bibliothek kann mit der FRAMEWORKZiel-Eigenschaft markiert werden, um ein macOS-Framework zu erstellen.

Wenn eine Bibliothek keine Symbole exportiert, muss sie nicht als SHARED-Bibliothek deklariert werden. Eine Windows-Ressourcen-DLL oder eine verwaltete C++/CLIDLL, die keine nicht verwalteten Symbole exportiert, müsste beispielsweise eine MODULE-Bibliothek sein, da CMake erwartet, dass eine SHARED-Bibliothek unter Windows immer eine zugehörige Importbibliothek hat.

Standardmäßig wird die Bibliotheksdatei in dem Verzeichnis des Build-Trees erstellt, das dem Verzeichnis des Quelltextes entspricht, in dem der Befehl aufgerufen wurde. Siehe Dokumentation der ARCHIVE_OUTPUT_DIRECTORY,LIBRARY_OUTPUT_DIRECTORY, undRUNTIME_OUTPUT_DIRECTORY Zieleigenschaften, um diesen Ort zu ändern. Siehe Dokumentation der OUTPUT_NAME targetEigenschaft, um den <name> Teil des endgültigen Dateinamens zu ändern.

Wenn EXCLUDE_FROM_ALL angegeben wird, wird die entsprechende Eigenschaft auf das erstellte Ziel gesetzt. Siehe Dokumentation der EXCLUDE_FROM_ALLTarget-Eigenschaft für Details.

Quellargumente für add_library können „Generatorausdrücke“ mit der Syntax $<...> verwenden. Siehe das cmake-generator-expressions(7)Handbuch für verfügbare Ausdrücke. Siehe das cmake-buildsystem(7)Handbuch für mehr über die Definition von Buildsystem-Eigenschaften.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.