Normal Libraries¶
add_library(<name> )
Přidá cíl knihovny s názvem <name>
, který bude sestaven ze zdrojových souborů uvedených ve volání příkazu. (Zdrojové soubory zde mohou být vynechány, pokud budou přidány později pomocí target_sources()
.) <name>
odpovídá logickému názvu cíle a musí být globálně jedinečný v rámci projektu. Skutečný název souboru vytvářené knihovny je sestaven na základě konvencí nativní platformy (například lib<name>.a
nebo<name>.lib
).
STATIC
, SHARED
nebo MODULE
lze zadat pro určení typu knihovny, která má být vytvořena. Knihovny STATIC
jsou archivy objektových souborůpro použití při linkování jiných cílů. Knihovny SHARED
se linkujídynamicky a načítají se za běhu. MODULE
knihovny jsou zásuvné moduly, které nejsou spojovány s jinými cíli, ale mohou být načteny dynamicky za běhu pomocí funkce podobné dlopen. Pokud není typ zadán explicitně, je typ STATIC
nebo SHARED
podle toho, zda je aktuální hodnota proměnné BUILD_SHARED_LIBS
ON
. Pro knihovny SHARED
aMODULE
je vlastnost POSITION_INDEPENDENT_CODE
target automaticky nastavena na ON
. knihovna SHARED
nebo STATIC
může být označena vlastností FRAMEWORK
target pro vytvoření macOS Framework.
Pokud knihovna neexportuje žádné symboly, nesmí být deklarována jako knihovnaSHARED
. Například knihovna DLL se zdroji systému Windows nebo spravovaná knihovna C++/CLIDLL, která neexportuje žádné nespravované symboly, by musela být knihovnou MODULE
. je to proto, že CMake očekává, že knihovna SHARED
bude mít ve Windows vždy přidruženou knihovnu importu.
Ve výchozím nastavení bude soubor knihovny vytvořen v adresáři stromu sestaveníodpovídajícímu adresáři stromu zdrojů, ve kterém byl příkazvyvolán. Změnu tohoto umístění naleznete v dokumentaci k vlastnostem ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
aRUNTIME_OUTPUT_DIRECTORY
target. Pro změnu části <name>
názvu finálního souboru viz dokumentaci vlastnosti OUTPUT_NAME
target.
Pokud je zadána EXCLUDE_FROM_ALL
, bude odpovídající vlastnost nastavena na vytvářeném cíli. Podrobnosti viz dokumentace vlastnosti EXCLUDE_FROM_ALL
cíl.
Argumenty zdroje add_library
mohou používat „generátorové výrazy“ se syntaxí $<...>
. Dostupné výrazy naleznete v cmake-generator-expressions(7)
příručce. Více informací o definování vlastností buildsystému naleznete v cmake-buildsystem(7)
příručce.
.