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 FRAMEWORKshared 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_DIRECTORIESdoeleigenschap 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.

admin

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

lg