Instalarea țintelor¶
install(TARGETS targets... ] ] ] )
Forma TARGETS
specifică regulile de instalare a țintelor dintr-un proiect. Există cinci tipuri de fișiere țintă care pot fi instalate:ARCHIVE
, LIBRARY
, RUNTIME
, FRAMEWORK
și BUNDLE
.Executabilele sunt tratate ca ținte RUNTIME
, cu excepția celor marcate cu proprietatea MACOSX_BUNDLE
, care sunt tratate ca ținte BUNDLE
pe OS X. Bibliotecile statice sunt tratate ca ținte ARCHIVE
, cu excepția celor marcate cu proprietatea FRAMEWORK
, care sunt tratate ca ținte FRAMEWORK
pe OS X.Bibliotecile de module sunt întotdeauna tratate ca ținte LIBRARY
.Pentru platformele non-DLL, bibliotecile partajate sunt tratate ca ținte LIBRARY
, cu excepția celor marcate cu proprietatea FRAMEWORK
, care sunt tratate ca ținte FRAMEWORK
pe OS X. Pentru platformele DLL, partea DLL a unei biblioteci partajate este tratată ca o țintă RUNTIME
, iar biblioteca de import corespunzătoare este tratată ca o țintă ARCHIVE
.Toate sistemele bazate pe Windows, inclusiv Cygwin, sunt platforme DLL.Argumentele ARCHIVE
, LIBRARY
, RUNTIME
și FRAMEWORK
schimbă tipul de țintă la care se aplică proprietățile ulterioare.Dacă nu se dă niciuna, proprietățile de instalare se aplică tuturor tipurilor de ținte. Dacă se dă unul singur, atunci vor fi instalate doar țintele de acel tip (care poate fi folosit pentru a instala doar o DLL sau doar o bibliotecă de import).
Argumentele PRIVATE_HEADER
, PUBLIC_HEADER
și RESOURCE
fac ca proprietățile ulterioare să se aplice la instalarea fișierelor asociate unei FRAMEWORK
biblioteci țintă partajate pe platformele non-Apple. Regulile definite de aceste argumente sunt ignorate pe platformele Apple, deoarece fișierele asociate sunt instalate în locațiile corespunzătoare în interiorul dosarului framework. Pentru mai multe detalii, consultați documentația proprietăților țintelorPRIVATE_HEADER
, PUBLIC_HEADER
șiRESOURCE
.
Puteți specifica fie NAMELINK_ONLY
, fie NAMELINK_SKIP
ca opțiuneLIBRARY
. Pe unele platforme, o bibliotecă partajată cu versiune are o legătură simbolică, cum ar fi:
lib<name>.so -> lib<name>.so.1
unde lib<name>.so.1
este numele de fiu al bibliotecii, iar lib<name>.so
este un „namelink” care permite corectorilor să găsească biblioteca atunci când i se dă-l<name>
. Opțiunea NAMELINK_ONLY
determină instalarea numai a aceluiamelink atunci când este instalată o bibliotecă țintă. Opțiunea NAMELINK_SKIP
determină instalarea altor fișiere de bibliotecă în afară de „namelink” atunci când se instalează o țintă de bibliotecă. Atunci când nu se dă niciuna dintre opțiuni, ambele porțiuni sunt instalate. Pe platformele în care bibliotecile partajate cu versiune nu au namelinks sau când o bibliotecă nu are versiune, opțiunea NAMELINK_SKIP
instalează biblioteca, iar opțiunea NAMELINK_ONLY
nu instalează nimic. Consultați proprietățile VERSION
șiSOVERSION
target pentru detalii privind crearea de biblioteci partajate versionate.
Opțiunea INCLUDES DESTINATION
specifică o listă de directoarecare vor fi adăugate la proprietatea INTERFACE_INCLUDE_DIRECTORIES
target a <targets>
atunci când sunt exportate de comandainstall(EXPORT)
. Dacă este specificată o cale relativă, aceasta este tratată ca fiind relativă la $<INSTALL_PREFIX>
.Aceasta este independentă de restul grupurilor de argumente și nu instalează de fapt nimic.
Una sau mai multe grupuri de proprietăți pot fi specificate într-un singur apel la forma TARGETS
a acestei comenzi. O țintă poate fi instalată de mai multe ori în locații diferite. Luați în considerare țintele ipotetice myExe
,mySharedLib
și myStaticLib
. Codul:
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)
va instala myExe
în <prefix>/bin
și myStaticLib
în<prefix>/lib/static
. Pe platformele non-DLL mySharedLib
va fiinstalat la <prefix>/lib
și /some/full/path
. Pe platformele DLL, DLL-ul mySharedLib
va fi instalat în <prefix>/bin
și/some/full/path
, iar biblioteca sa de import va fi instalată în<prefix>/lib/static
și /some/full/path
.
Opțiunea EXPORT
asociază fișierele țintă instalate cu un export numit <export-name>
. Ea trebuie să apară înaintea oricărei opțiuni RUNTIME
,LIBRARY
sau ARCHIVE
. Pentru a instala efectiv fișierul de export propriu-zis, apelați install(EXPORT)
, documentat mai jos.
Instalarea unei ținte cu proprietatea țintă EXCLUDE_FROM_ALL
setată la TRUE
are un comportament nedefinit.
Destinația de instalare dată la instalarea țintei DESTINATION
poate utiliza „expresii generatoare” cu sintaxa $<...>
. A se vedea manualulcmake-generator-expressions(7)
pentru expresiile disponibile.