Normal Libraries¶
add_library(<name> )
Tilføjer et biblioteksmål kaldet <name>
, der skal bygges fra de kildefiler, der er anført i kommando-invitationen. (Kildefilerne kan udelades her, hvis de tilføjes senere ved hjælp af target_sources()
.) <name>
svarer til det logiske målnavn og skal være globalt entydigt i et projekt. Det faktiske filnavn på det bibliotek, der oprettes, konstrueres på grundlag af konventioner for den native platform (f.eks. lib<name>.a
eller<name>.lib
).
STATIC
, SHARED
eller MODULE
kan angives for at angive den type bibliotek, der skal oprettes. STATIC
biblioteker er arkiver af objektfiler til brug ved linkning af andre mål. SHARED
-biblioteker linkes dynamisk og indlæses på køretid. MODULE
biblioteker er plugins, der ikke er linket til andre mål, men som kan indlæses dynamisk på køretid ved hjælp af dlopen-lignende funktionalitet. Hvis der ikke udtrykkeligt er angivet nogen type, er typen STATIC
eller SHARED
baseret på, om den aktuelle værdi af variablen BUILD_SHARED_LIBS
er ON
. For SHARED
– ogMODULE
-biblioteker sættes POSITION_INDEPENDENT_CODE
targetproperty automatisk til ON
.Et SHARED
– eller STATIC
-bibliotek kan markeres med FRAMEWORK
target-egenskaben for at oprette en macOS Framework.
Hvis et bibliotek ikke eksporterer nogen symboler, skal det ikke deklareres som et SHARED
-bibliotek. For eksempel skal en Windows ressource-DLL eller en administreret C++/CLIDLL, der ikke eksporterer ikke-administrerede symboler, være et MODULE
-bibliotek.Dette skyldes, at CMake forventer, at et SHARED
-bibliotek altid har et tilknyttet importbibliotek på Windows.
Biblioteksfilen vil som standard blive oprettet i den mappe i buildtræet, der svarer til den mappe i kildetræet, hvor kommandoen blev påkaldt. Se dokumentationen af ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
ogRUNTIME_OUTPUT_DIRECTORY
målegenskaberne for at ændre denne placering. Se dokumentationen af OUTPUT_NAME
targetegenskaben for at ændre <name>
-delen af det endelige filnavn.
Hvis EXCLUDE_FROM_ALL
er angivet, vil den tilsvarende egenskab blive indstillet på det oprettede target. Se dokumentationen af EXCLUDE_FROM_ALL
target-egenskaben for detaljer.
Kildeargumenter til add_library
kan bruge “generatorudtryk” med syntaksen $<...>
. Se cmake-generator-expressions(7)
manualen for tilgængelige udtryk. Se cmake-buildsystem(7)
manualen for yderligere oplysninger om definition af buildsystemegenskaber.