Installing Targets¶
install(TARGETS targets... ] ] ] )
Het TARGETS
formulier specificeert regels voor het installeren van targets vanuit een project. Er zijn vijf soorten doelbestanden die kunnen worden geïnstalleerd: ARCHIVE
, LIBRARY
, RUNTIME
, FRAMEWORK
en BUNDLE
. Uitvoerbare bestanden worden behandeld als RUNTIME
-targets, behalve de bestanden die zijn gemarkeerd met de eigenschap MACOSX_BUNDLE
, die worden op OS X behandeld als BUNDLE
-targets. Statische bibliotheken worden behandeld als ARCHIVE
-targets, behalve die gemarkeerd met de eigenschap FRAMEWORK
, die worden behandeld als FRAMEWORK
-targets op OS X. Modulebibliotheken worden altijd behandeld als LIBRARY
-targets. Voor niet-DLL-platforms worden gedeelde bibliotheken behandeld als LIBRARY
-targets, behalve die gemarkeerd met de eigenschap FRAMEWORK
, die worden behandeld als FRAMEWORK
-targets op OS X. Voor DLL-platforms wordt het DLL-deel van een gedeelde bibliotheek behandeld als een RUNTIME
-doel en de corresponderende importbibliotheek als een ARCHIVE
-doel. Alle Windows-gebaseerde systemen, inclusief Cygwin, zijn DLL-platforms. De argumenten ARCHIVE
, LIBRARY
, RUNTIME
en FRAMEWORK
bepalen op welk type doel de volgende eigenschappen van toepassing zijn. Als er geen is gegeven, gelden de installatie-eigenschappen voor alle doeltypen. Als er slechts één is gegeven, worden alleen targets van dat type geïnstalleerd (wat kan worden gebruikt om alleen een DLL of alleen een importbibliotheek te installeren).
De argumenten PRIVATE_HEADER
, PUBLIC_HEADER
en RESOURCE
zorgen ervoor dat de volgende eigenschappen worden toegepast op de installatie van een FRAMEWORK
shared library target’s geassocieerde bestanden op niet-Apple-platforms. Regels gedefinieerd door deze argumenten worden genegeerd op Apple platforms omdat de geassocieerde bestanden worden geïnstalleerd op de juiste locaties binnen de framework map. Zie de documentatie van de doel-eigenschappenPRIVATE_HEADER
, PUBLIC_HEADER
, enRESOURCE
voor details.
Efwel NAMELINK_ONLY
of NAMELINK_SKIP
kan gespecificeerd worden als eenLIBRARY
optie. Op sommige platformen heeft een geversioneerde gedeelde bibliotheek een symbolische link zoals:
lib<name>.so -> lib<name>.so.1
waar lib<name>.so.1
de sonaam van de bibliotheek is en lib<name>.so
een “namelink” is die linkers toelaat om de bibliotheek te vinden als ze-l<name>
krijgen. De optie NAMELINK_ONLY
zorgt ervoor dat alleen de namelink wordt geïnstalleerd wanneer een doelbibliotheek wordt geïnstalleerd. De NAMELINK_SKIP
optie zorgt voor de installatie van andere bibliotheek bestanden dan de namelink wanneer een bibliotheek doel is geïnstalleerd. Als geen van beide opties is gegeven, worden beide delen geïnstalleerd. Op platformen waar geversioneerde gedeelde bibliotheken geen namelinks hebben of wanneer een bibliotheek niet geversioneerd is, installeert deNAMELINK_SKIP
optie de bibliotheek en de NAMELINK_ONLY
optie installeert niets. Zie de doel-eigenschappen VERSION
enSOVERSION
voor details over het maken van gedeelde bibliotheken met versiebeheer.
De INCLUDES DESTINATION
specificeert een lijst van mappen die zullen worden toegevoegd aan de INTERFACE_INCLUDE_DIRECTORIES
doeleigenschap van de <targets>
wanneer deze wordt geëxporteerd door hetinstall(EXPORT)
commando. Als een relatief pad wordt opgegeven, wordt dit behandeld als relatief ten opzichte van de $<INSTALL_PREFIX>
. Dit is onafhankelijk van de rest van de argumentgroepen en installeert in feite niets.
Een of meer groepen eigenschappen kunnen worden opgegeven in een enkele oproep tot de TARGETS
vorm van dit commando. Een doel kan meer dan eens op verschillende locaties worden geïnstalleerd. Neem de hypothetische targets myExe
,mySharedLib
, en myStaticLib
. De code:
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)
zal myExe
installeren naar <prefix>/bin
en myStaticLib
naar<prefix>/lib/static
. Op niet-DLL-platforms zal mySharedLib
worden geïnstalleerd naar <prefix>/lib
en /some/full/path
. Op DLL platformen zal de mySharedLib
DLL worden geinstalleerd op <prefix>/bin
en/some/full/path
en zijn import library zal worden geinstalleerd op<prefix>/lib/static
en /some/full/path
.
De EXPORT
optie associeert de geinstalleerde doel bestanden met een export genaamd <export-name>
. Deze moet voor RUNTIME
,LIBRARY
, of ARCHIVE
opties staan. Om de exportfile zelf te installeren, roept u install(EXPORT)
aan, hieronder gedocumenteerd.
Installeren van een target met de EXCLUDE_FROM_ALL
target eigenschap ingesteld op TRUE
heeft ongedefinieerd gedrag.
De installatie bestemming gegeven aan de target install DESTINATION
kan “generator expressies” gebruiken met de syntax $<...>
. Zie decmake-generator-expressions(7)
handleiding voor beschikbare expressies.