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 FRAMEWORK
shared 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_DIRECTORIES
target 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.