Instalace cílů¶

install(TARGETS targets... ] ] ] )

Formulář TARGETS určuje pravidla pro instalaci cílů z projektu. Existuje pět druhů cílových souborů, které lze instalovat:ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK a BUNDLE. se spustitelnými soubory se zachází jako s cíli RUNTIME, s výjimkou těch, které jsou označeny vlastností MACOSX_BUNDLE, se v OS X zachází jako s cíli BUNDLE. Se statickými knihovnami se zachází jako s cíli ARCHIVE, s výjimkou těch, které jsou označeny vlastností FRAMEWORK, s nimiž se v OS X zachází jako s cíli FRAMEWORK.S knihovnami modulů se vždy zachází jako s cíli LIBRARY.Pro platformy bez knihoven DLL se se sdílenými knihovnami zachází jako s cíli LIBRARY, s výjimkou těch, které jsou označeny vlastností FRAMEWORK, s nimiž se v OS X zachází jako s cíli FRAMEWORK. Pro platformy DLL je DLLčást sdílené knihovny považována za RUNTIMEcíl a odpovídající importní knihovna je považována za ARCHIVEcíl.Všechny systémy založené na Windows včetně Cygwinu jsou platformy DLL.Argumenty ARCHIVE, LIBRARY, RUNTIME a FRAMEWORKzměňují typ cíle, na který se vztahují následné vlastnosti.Pokud není zadán žádný, vlastnosti instalace se vztahují na všechny typy cílů. Pokud je zadán pouze jeden, budou instalovány pouze cíle tohoto typu (což lze použít pro instalaci pouze DLL nebo pouze importní knihovny).

Argumenty PRIVATE_HEADER, PUBLIC_HEADER a RESOURCEzpůsobí, že následné vlastnosti budou použity pro instalaci přidružených souborů FRAMEWORKcíle sdílené knihovny na jiných platformách než Apple. Pravidla definovaná těmito argumenty jsou na platformách Apple ignorována, protože přidružené soubory jsou instalovány do příslušných umístění uvnitř složky frameworku. Podrobnosti naleznete v dokumentaci k vlastnostemPRIVATE_HEADER, PUBLIC_HEADER aRESOURCE cíle.

Jako volbuLIBRARY lze zadat buď NAMELINK_ONLY, nebo NAMELINK_SKIP. Na některých platformách má sdílená knihovna s verzí symbolický odkaz, například:

lib<name>.so -> lib<name>.so.1

kde lib<name>.so.1 je soname knihovny a lib<name>.soje „namelink“ umožňující linkerům najít knihovnu při zadání-l<name>. Volba NAMELINK_ONLY způsobí, že se při instalaci cílové knihovny nainstaluje pouze thenamelink. Volba NAMELINK_SKIPzpůsobí instalaci jiných souborů knihovny než namelink, když je instalován alibrary target. Pokud není zadána žádná z možností, nainstalují se obě části. Na platformách, kde verzované sdílené knihovnynemají namelink nebo když knihovna není verzovaná, volbaNAMELINK_SKIP nainstaluje knihovnu a volba NAMELINK_ONLY nenainstaluje nic. Podrobnosti o vytváření verzovaných sdílených knihoven najdete ve vlastnostech VERSION aSOVERSION target.

Volba INCLUDES DESTINATION určuje seznam adresářů, které budou přidány do vlastnosti INTERFACE_INCLUDE_DIRECTORIEStarget <targets> při exportu příkazeminstall(EXPORT). Pokud je zadána relativní cesta, je považována za relativní vůči $<INSTALL_PREFIX>.Je nezávislá na ostatních skupinách argumentů a ve skutečnosti nic neinstaluje.

Jedním voláním TARGETSformy tohoto příkazu lze zadat jednu nebo více skupin vlastností. Cíl může být nainstalován vícekrát na různá místa. Uvažujme hypotetické cíle myExe,mySharedLib a myStaticLib. Kód:

install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)

nainstaluje myExe na <prefix>/bin a myStaticLib na<prefix>/lib/static. Na platformách bez DLL se mySharedLib nainstaluje na <prefix>/lib a /some/full/path. Na platformách DLLbude knihovna mySharedLib DLL nainstalována do <prefix>/bin a/some/full/path a její importní knihovna bude nainstalována do<prefix>/lib/static a /some/full/path.

Volba EXPORT spojí nainstalované cílové soubory sexportem s názvem <export-name>. Musí se objevit před jakoukoli volbou RUNTIME,LIBRARY nebo ARCHIVE. Chcete-li skutečně nainstalovat samotný exportní soubor, zavolejte install(EXPORT), což je zdokumentováno níže.

Instalace cíle s vlastností EXCLUDE_FROM_ALL target nastavenou na TRUE má nedefinované chování.

Cíl instalace zadaný cíli instalace DESTINATION může používat „generátorové výrazy“ se syntaxí $<...>. Dostupné výrazy naleznete v příručcecmake-generator-expressions(7).

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg