Normal Libraries¶
add_library(<name> )
Voegt een library target genaamd <name>
toe om gebouwd te worden van de bronbestanden die in de commando-aanroep worden genoemd. (De bronbestanden kunnen hier worden weggelaten als ze later worden toegevoegd met target_sources()
.) De <name>
komt overeen met de logische doelnaam en moet globaal uniek zijn binnen een project. De eigenlijke bestandsnaam van de te bouwen bibliotheek wordt samengesteld op basis van conventies van het native platform (zoals lib<name>.a
of<name>.lib
).
STATIC
, SHARED
, of MODULE
kan worden gegeven om het type bibliotheek aan te geven dat moet worden gemaakt. STATIC
-bibliotheken zijn archieven van objectbestanden voor gebruik bij het linken van andere targets. SHARED
bibliotheken worden dynamisch gelinkt en tijdens runtime geladen. MODULE
bibliotheken zijn plugins die niet aan andere targets worden gekoppeld, maar dynamisch tijdens runtime kunnen worden geladen met behulp van dlopen-achtige functionaliteit. Als er geen type expliciet is gegeven, is het type STATIC
of SHARED
, afhankelijk van of de huidige waarde van de variabele BUILD_SHARED_LIBS
ON
is. Voor SHARED
enMODULE
bibliotheken wordt de POSITION_INDEPENDENT_CODE
target eigenschap automatisch ingesteld op ON
.Een SHARED
of STATIC
bibliotheek kan worden gemarkeerd met de FRAMEWORK
target eigenschap om een macOS Framework te maken.
Als een bibliotheek geen symbolen exporteert, moet deze niet worden gedeclareerd als eenSHARED
bibliotheek. Bijvoorbeeld, een Windows resource DLL of een managed C++/CLIDL die geen unmanaged symbolen exporteert, zou een MODULE
bibliotheek moeten zijn. Dit komt omdat CMake verwacht dat een SHARED
bibliotheek altijd een geassocieerde import bibliotheek heeft op Windows.
Het bibliotheekbestand wordt standaard aangemaakt in de build tree directory die correspondeert met de source tree directory waarin het commando werd aangeroepen. Zie de documentatie bij de ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
, enRUNTIME_OUTPUT_DIRECTORY
doel-eigenschappen om deze locatie te wijzigen. Zie de documentatie van de OUTPUT_NAME
target eigenschap om het <name>
deel van de uiteindelijke bestandsnaam te wijzigen.
Als EXCLUDE_FROM_ALL
is gegeven, zal de corresponderende eigenschap worden ingesteld op het aangemaakte doel. Zie de documentatie van de EXCLUDE_FROM_ALL
target eigenschap voor details.
Bron argumenten voor add_library
mogen “generator expressies” gebruiken met de syntax $<...>
. Zie de cmake-generator-expressions(7)
-handleiding voor beschikbare expressies. Zie de cmake-buildsystem(7)
handleiding voor meer informatie over het definiëren van bouwsysteemeigenschappen.