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 RUNTIME
cíl a odpovídající importní knihovna je považována za ARCHIVE
cíl.Všechny systémy založené na Windows včetně Cygwinu jsou platformy DLL.Argumenty ARCHIVE
, LIBRARY
, RUNTIME
a FRAMEWORK
změň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 RESOURCE
způsobí, že následné vlastnosti budou použity pro instalaci přidružených souborů FRAMEWORK
cí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>.so
je „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_SKIP
způ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_DIRECTORIES
target <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 TARGETS
formy 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)
.