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_CODE
Ziel-Eigenschaft automatisch auf ON
gesetzt.
Eine SHARED
– oder STATIC
-Bibliothek kann mit der FRAMEWORK
Ziel-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_ALL
Target-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.