Installing Targets¶

install(TARGETS targets... ] ] ] )

La forma TARGETS specifica le regole per installare i target da un progetto. Ci sono cinque tipi di file target che possono essere installati: ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK e BUNDLE. Gli eseguibili sono trattati come target RUNTIME, eccetto quelli contrassegnati dalla proprietà MACOSX_BUNDLE che sono trattati come target BUNDLE su OS X. Le librerie statiche sono trattate come obiettivi ARCHIVE, eccetto quelle contrassegnate con la proprietà FRAMEWORK che sono trattate come obiettivi FRAMEWORK su OS X. Le librerie di moduli sono sempre trattate come obiettivi LIBRARY. Per piattaforme non-DLL le librerie condivise sono trattate come obiettivi LIBRARY, eccetto quelle contrassegnate con la proprietà FRAMEWORK che sono trattate come obiettivi FRAMEWORK su OS X. Per le piattaforme DLL la parte DLL di una libreria condivisa è trattata come un obiettivo RUNTIME e la corrispondente libreria di importazione è trattata come un obiettivo ARCHIVE.Tutti i sistemi basati su Windows incluso Cygwin sono piattaforme DLL.Gli argomenti ARCHIVE, LIBRARY, RUNTIME, e FRAMEWORK cambiano il tipo di obiettivo a cui si applicano le proprietà successive.Se non ne viene dato nessuno le proprietà di installazione si applicano a tutti i tipi di obiettivo. Se ne viene dato solo uno, allora saranno installati solo i target di quel tipo (che può essere usato per installare solo una DLL o solo una libreria di importazione).

Gli argomenti PRIVATE_HEADER, PUBLIC_HEADER, e RESOURCE fanno sì che le proprietà successive siano applicate all’installazione dei file associati a una libreria FRAMEWORKshared target su piattaforme non Apple. Le regole definite da questi argomenti sono ignorate sulle piattaforme Apple perché i file associati sono installati nelle posizioni appropriate all’interno della cartella del framework. Vedi la documentazione delle proprietàPRIVATE_HEADER, PUBLIC_HEADER eRESOURCE dell’obiettivo per i dettagli.

Oppure NAMELINK_ONLY o NAMELINK_SKIP può essere specificato come opzioneLIBRARY. Su alcune piattaforme una libreria condivisa con versione ha un collegamento simbolico come:

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

dove lib<name>.so.1 è il nome della libreria e lib<name>.soè un “namelink” che permette ai linker di trovare la libreria quando viene data-l<name>. L’opzione NAMELINK_ONLY causa l’installazione del solo namelink quando viene installato un target di libreria. L’opzione NAMELINK_SKIP causa l’installazione di file di libreria diversi dal namelink quando è installato un target di libreria. Quando nessuna opzione è data entrambe le porzioni sono installate. Sulle piattaforme dove le librerie condivise versionate non hanno namelink o quando una libreria non è versionata l’opzioneNAMELINK_SKIP installa la libreria e l’opzione NAMELINK_ONLY non installa nulla. Vedere le proprietà VERSION eSOVERSION target per i dettagli sulla creazione di librerie condivise in versione.

Il INCLUDES DESTINATION specifica una lista di directory che saranno aggiunte alla proprietà INTERFACE_INCLUDE_DIRECTORIEStarget della <targets> quando viene esportata dal comandoinstall(EXPORT). Se viene specificato un percorso relativo, viene trattato come relativo al $<INSTALL_PREFIX>.Questo è indipendente dal resto dei gruppi di argomenti e non installa effettivamente nulla.

Uno o più gruppi di proprietà possono essere specificati in una singola chiamata alla forma TARGETS di questo comando. Un target può essere installato più di una volta in posizioni diverse. Considerate gli ipotetici obiettivi myExe,mySharedLib e myStaticLib. Il codice:

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

installerà myExe in <prefix>/bin e myStaticLib in<prefix>/lib/static. Sulle piattaforme non DLL mySharedLib sarà installato su <prefix>/lib e /some/full/path. Su piattaforme DLL la DLL mySharedLib sarà installata in <prefix>/bin e /some/full/path e la sua libreria di importazione sarà installata in <prefix>/lib/static e /some/full/path.

L’opzione EXPORT associa i file di destinazione installati con un’esportazione chiamata <export-name>. Deve apparire prima di qualsiasi opzione RUNTIME,LIBRARY o ARCHIVE. Per installare effettivamente il file di esportazione stesso, chiama install(EXPORT), documentato di seguito.

Installare un target con la proprietà EXCLUDE_FROM_ALL target impostata su TRUE ha un comportamento non definito.

La destinazione di installazione data al target install DESTINATION può usare “espressioni generatrici” con la sintassi $<...>. Vedere il manualecmake-generator-expressions(7) per le espressioni disponibili.

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg