add_library¶

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_CODEtarget eigenschap automatisch ingesteld op ON.Een SHARED of STATIC bibliotheek kan worden gemarkeerd met de FRAMEWORKtarget 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_ALLtarget 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.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.