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 BUNDLEcé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 FRAMEWORKmegosztott 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_ONLYopció 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_DIRECTORIEStarget 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.

admin

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

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

lg