add_library¶

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 FRAMEWORKtarget 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_ALLtarget 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.

Lämna ett svar

Din e-postadress kommer inte publiceras.