add_library¶

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_CODEcéltulajdonság automatikusan ON-re kerül beállításra.Egy SHARED vagy STATIC könyvtárat a FRAMEWORKcé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 SHAREDkö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_ALLcé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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.