Normal Libraries¶
add_library(<name> )
Hozzáad egy <name>
nevű könyvtárcélt, amelyet a parancshívásban felsorolt forrásfájlokból kell felépíteni. (A forrásfájlok itt elhagyhatók, ha később kerülnek hozzáadásra a target_sources()
használatával.) A <name>
megfelel a logikai célpont nevének, és globálisan egyedinek kell lennie egy projektben. A létrehozott könyvtár tényleges fájlneve a natív platform konvenciói alapján épül fel (például lib<name>.a
vagy <name>.lib
).
STATIC
, SHARED
vagy MODULE
megadható a létrehozandó könyvtár típusának meghatározásához. A STATIC
könyvtárak objektumfájlok archívumai, amelyeket más célok összekapcsolásakor használnak. A SHARED
könyvtárakat dinamikusan linkelik és futásidőben töltik be. MODULE
A MODULE
könyvtárak olyan bővítmények, amelyek nem kapcsolódnak más célprogramokhoz, de dinamikusan betölthetők futásidőben a dlopen-szerű funkcionalitással. Ha nincs explicit típus megadása, akkor a típus STATIC
vagy SHARED
attól függően, hogy a változó BUILD_SHARED_LIBS
aktuális értéke ON
. A SHARED
ésMODULE
könyvtárak esetében a POSITION_INDEPENDENT_CODE
céltulajdonság automatikusan ON
-re kerül beállításra.Egy SHARED
vagy STATIC
könyvtárat a FRAMEWORK
céltulajdonsággal lehet megjelölni egy macOS keretrendszer létrehozásához.
Ha egy könyvtár nem exportál szimbólumokat, akkor nem kell SHARED
könyvtárként deklarálni. Például egy Windows erőforrás DLL vagy egy menedzselt C++/CLIDLL, amely nem exportál nem menedzselt szimbólumokat, MODULE
könyvtárnak kell lennie.Ennek oka, hogy a CMake elvárja, hogy egy SHARED
könyvtárhoz mindig legyen egy hozzátartozó importkönyvtár Windowson.
A könyvtárfájl alapértelmezés szerint abban a build tree könyvtárban lesz létrehozva, amelyik annak a source tree könyvtárnak felel meg, amelyben a parancsot meghívták. Ennek a helynek a megváltoztatásához lásd a ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
ésRUNTIME_OUTPUT_DIRECTORY
céltulajdonságok dokumentációját. A végső fájlnév <name>
részének megváltoztatásához lásd a OUTPUT_NAME
targettulajdonság dokumentációját.
Ha EXCLUDE_FROM_ALL
van megadva, akkor a megfelelő tulajdonság lesz beállítva a létrehozott targetre. A részletekért lásd a EXCLUDE_FROM_ALL
cél tulajdonság dokumentációját.
A add_library
forrás argumentumai használhatnak “generátor kifejezéseket” a $<...>
szintaxissal. A rendelkezésre álló kifejezéseket lásd a cmake-generator-expressions(7)
kézikönyvben. A cmake-buildsystem(7)
kézikönyvben olvasható bővebben a buildsystem tulajdonságok definiálásáról.