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 FRAMEWORKbiblioteci ț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>.soeste 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_DIRECTORIEStarget 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.

admin

Lasă un răspuns

Adresa ta de email nu va fi publicată.

lg