Célprogramok telepítése¶
install(TARGETS targets... ] ] ] )
A TARGETS
űrlap a projektből származó célprogramok telepítésének szabályait határozza meg. Ötféle célfájl telepíthető:ARCHIVE
, LIBRARY
, RUNTIME
, FRAMEWORK
és BUNDLE
.A végrehajtható fájlokat RUNTIME
célként kezeljük, kivéve, hogy a MACOSX_BUNDLE
tulajdonsággal jelölteket BUNDLE
célként kezeljük OS X-en. A statikus könyvtárakat ARCHIVE
célként kezeljük,kivéve a FRAMEWORK
tulajdonsággal jelölteket FRAMEWORK
célként kezeljük az OS X-en.A modulkönyvtárakat mindig LIBRARY
célként kezeljük.A nem DLL platformok esetében a megosztott könyvtárakat LIBRARY
célként kezeljük, kivéve a FRAMEWORK
tulajdonsággal jelölteket FRAMEWORK
célként kezeljük az OS X-en. DLL platformok esetén a megosztott könyvtár DLL része RUNTIME
célpontként, a megfelelő importkönyvtár pedig ARCHIVE
célpontként kezelendő.Minden Windows-alapú rendszer, beleértve a Cygwint is, DLL platformnak minősül.A ARCHIVE
, LIBRARY
, RUNTIME
és FRAMEWORK
argumentumok megváltoztatják a célpont típusát, amelyre a következő tulajdonságok vonatkoznak.Ha egyik sem szerepel, a telepítési tulajdonságok minden céltípusra vonatkoznak. Ha csak egyet adunk meg, akkor csak az adott típusú célpontok lesznek telepítve (ami csak egy DLL vagy csak egy importkönyvtár telepítésére használható).
A PRIVATE_HEADER
, PUBLIC_HEADER
és RESOURCE
argumentumok hatására a következő tulajdonságok a FRAMEWORK
megosztott könyvtár célponthoz tartozó fájlok telepítésére vonatkoznak a nem Apple platformokon. Az ezen argumentumok által meghatározott szabályok Apple platformokon figyelmen kívül maradnak, mivel a kapcsolódó fájlok a megfelelő helyekre kerülnek telepítésre a keretmappán belül. Részletekért lásd aPRIVATE_HEADER
, PUBLIC_HEADER
ésRESOURCE
céltulajdonságok dokumentációját.
Egyik NAMELINK_ONLY
vagy NAMELINK_SKIP
megadható LIBRARY
opcióként. Egyes platformokon egy verziószámozott megosztott könyvtárnak van egy szimbolikus linkje, például:
lib<name>.so -> lib<name>.so.1
ahol lib<name>.so.1
a könyvtár soname-ja és lib<name>.so
egy “namelink”, amely lehetővé teszi a linkelők számára, hogy megtalálják a könyvtárat, ha megadjuk-l<name>
. A NAMELINK_ONLY
opció csak akkoramelink telepítését okozza, ha egy könyvtárcélt telepítünk. A NAMELINK_SKIP
opció a namelinken kívüli könyvtárfájlok telepítését okozza, ha alibrary target van telepítve. Ha egyik opció sincs megadva, mindkét rész települ. Azokon a platformokon, ahol a verziószámozott megosztott könyvtáraknak nincsenek namelinkeik, vagy amikor egy könyvtár nem verziószámozott, aNAMELINK_SKIP
opció telepíti a könyvtárat, a NAMELINK_ONLY
opció pedig nem telepít semmit. Lásd a VERSION
ésSOVERSION
target tulajdonságokat a verzióköteles megosztott könyvtárak létrehozásának részleteiért.
A INCLUDES DESTINATION
megadja azon könyvtárak listáját, amelyek hozzáadódnak a <targets>
INTERFACE_INCLUDE_DIRECTORIES
target tulajdonságához, amikor ainstall(EXPORT)
parancs exportálja. Ha relatív elérési utat ad meg, akkor azt a $<INSTALL_PREFIX>
-hoz viszonyítva kezeli.Ez független a többi argumentumcsoporttól, és valójában nem telepít semmit.
Egy vagy több tulajdonságcsoport adható meg a parancs TARGETS
formájának egyetlen hívásával. Egy célpont többször is telepíthető különböző helyekre. Tekintsük a myExe
,mySharedLib
és myStaticLib
hipotetikus célokat. A következő kód:
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)
a myExe
-t a <prefix>/bin
-ra és a myStaticLib
-t a <prefix>/lib/static
-re telepíti. A nem-DLL platformokon a mySharedLib
a <prefix>/lib
és a /some/full/path
helyre lesz telepítve. DLL platformokon a mySharedLib
DLL települ a <prefix>/bin
és/some/full/path
helyre, az importált könyvtár pedig a <prefix>/lib/static
és /some/full/path
helyre.
A EXPORT
opció a telepített célfájlokat egy <export-name>
nevű exporthoz társítja. A RUNTIME
,LIBRARY
vagy ARCHIVE
opciók előtt kell megjelennie. Magának az exportfájlnak a tényleges telepítéséhez hívja meg az alább dokumentált install(EXPORT)
opciót.
A EXCLUDE_FROM_ALL
target tulajdonságot TRUE
-ra állító target telepítése meghatározatlan viselkedéssel jár.
A target install DESTINATION
-hoz megadott install célállomás $<...>
szintaxisú “generátor kifejezéseket” használhat. A rendelkezésre álló kifejezéseket lásd a cmake-generator-expressions(7)
kézikönyvben.