Normal Libraries¶
add_library(<name> )
Lägger till ett biblioteksmål som heter <name>
och som ska byggas från källfilerna som anges i kommandot. (Källfilerna kan utelämnas här om de läggs till senare med target_sources()
.) <name>
motsvarar det logiska målnamnet och måste vara globalt unikt inom ett projekt. Det faktiska filnamnet för det skapade biblioteket konstrueras baserat på konventioner för den ursprungliga plattformen (t.ex. lib<name>.a
eller<name>.lib
).
STATIC
, SHARED
eller MODULE
kan anges för att specificera vilken typ av bibliotek som ska skapas. STATIC
bibliotek är arkiv med objektfiler för användning vid länkning av andra mål. SHARED
-bibliotek länkas dynamiskt och laddas vid körning. MODULE
bibliotek är plugins som inte länkas till andra mål men som kan laddas dynamiskt vid körning med hjälp av dlopen-liknande funktioner. Om ingen typ anges uttryckligen är typen STATIC
eller SHARED
beroende på om det aktuella värdet av variabeln BUILD_SHARED_LIBS
är ON
. För SHARED
ochMODULE
bibliotek sätts POSITION_INDEPENDENT_CODE
targetproperty till ON
automatiskt.Ett SHARED
eller STATIC
bibliotek kan markeras med FRAMEWORK
target property för att skapa ett macOS Framework.
Om ett bibliotek inte exporterar några symboler får det inte deklareras som ett SHARED
bibliotek. Till exempel, en Windows resource DLL eller en managed C++/CLIDLL som inte exporterar några icke hanterade symboler måste vara ett MODULE
-bibliotek.Detta beror på att CMake förväntar sig att ett SHARED
-bibliotek alltid har ett associerat importbibliotek på Windows.
Som standard kommer biblioteksfilen att skapas i den katalog i byggträdet som motsvarar källträdskatalogen i vilken kommandot anropades. Se dokumentationen för ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
ochRUNTIME_OUTPUT_DIRECTORY
målegenskaperna för att ändra den här platsen. Se dokumentationen av OUTPUT_NAME
targetegenskapen för att ändra <name>
delen av det slutliga filnamnet.
Om EXCLUDE_FROM_ALL
anges kommer motsvarande egenskap att sättas på det skapade målet. Se dokumentationen för egenskapen EXCLUDE_FROM_ALL
target för detaljer.
Källargument till add_library
kan använda ”generatoruttryck” med syntaxen $<...>
. Se cmake-generator-expressions(7)
handboken för tillgängliga uttryck. Se cmake-buildsystem(7)
handboken för mer information om hur man definierar buildsystemegenskaper.