Kohteiden asentaminen¶

install(TARGETS targets... ] ] ] )

Lomake TARGETS määrittelee säännöt kohteiden asentamiselle projektista. Asennettavia kohdetiedostoja on viidenlaisia: ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK ja BUNDLE.Suoritustiedostoja käsitellään RUNTIME-kohteina, paitsi että MACOSX_BUNDLE-ominaisuudella MACOSX_BUNDLE merkittyjä kohdetiedostoja käsitellään OS X:ssä BUNDLE-kohteina. Staattisia kirjastoja käsitellään ARCHIVE-kohteina,paitsi FRAMEWORK-ominaisuudella merkittyjä kohdellaan FRAMEWORK-kohteina OS X:ssä.Moduulikirjastoja käsitellään aina LIBRARY-kohteina.Muilla kuin DLL-alustoilla jaettuja kirjastoja käsitellään LIBRARY-kohteina, paitsi FRAMEWORK-ominaisuudella merkittyjä kohdellaan FRAMEWORK-kohteina OS X:ssä. DLL-alustoilla jaetun kirjaston DLL-osaa käsitellään RUNTIME-kohteena ja vastaavaa tuontikirjastoa käsitellään ARCHIVE-kohteena.Kaikki Windows-pohjaiset järjestelmät, Cygwin mukaan lukien, ovat DLL-alustoja.Argumentit ARCHIVE, LIBRARY, RUNTIME ja FRAMEWORKmuuttavat kohdetyypin, johon myöhemmät ominaisuudet pätevät.Jos mitään ei anneta, asennuksen ominaisuudet pätevät kaikkiin kohdetyyppeihin. Jos annetaan vain yksi, asennetaan vain kyseisen tyyppiset kohteet (jolloin voidaan asentaa pelkkä DLL tai pelkkä tuontikirjasto).

PRIVATE_HEADER, PUBLIC_HEADER ja RESOURCE -argumentit aiheuttavat sen, että myöhempiä ominaisuuksia sovelletaan FRAMEWORKjakokirjastokohteen FRAMEWORK liitännäistiedostojen asentamiseen muilla kuin Apple-alustoilla. Näiden argumenttien määrittelemät säännöt jätetään huomiotta Apple-alustoilla, koska liitännäistiedostot asennetaan asianmukaisiin paikkoihin kehyskansioon. Katso lisätietojaPRIVATE_HEADER-, PUBLIC_HEADER– jaRESOURCE-kohteen ominaisuuksien dokumentaatiosta.

Joko NAMELINK_ONLY tai NAMELINK_SKIP voidaan määritellä LIBRARY-asetuksena. Joillakin alustoilla versioidulla jaetulla kirjastolla on symbolinen linkki, kuten:

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

jossa lib<name>.so.1 on kirjaston soname ja lib<name>.soon ”nimilinkki”, jonka avulla linkittäjät löytävät kirjaston, kun annetaan-l<name>. Vaihtoehto NAMELINK_ONLY saa aikaan sen, että vain thenamelink asennetaan, kun kirjastokohde asennetaan. Vaihtoehto NAMELINK_SKIPaiheuttaa muiden kirjastotiedostojen kuin nimilinkin asentamisen, kun alikirjastokohde asennetaan. Kun kumpaakaan vaihtoehtoa ei anneta, molemmat osat asennetaan. Alustoilla, joilla versioiduissa jaetuissa kirjastoissaei ole nimilinkkejä tai kun kirjastoa ei ole versioitu, NAMELINK_SKIP-vaihtoehto asentaa kirjaston ja NAMELINK_ONLY-vaihtoehto ei asenna mitään. Katso VERSION– jaSOVERSIONkohdeominaisuuksista lisätietoja versioidun jaetun kirjaston luomisesta.

Komento INCLUDES DESTINATIONmäärittää luettelon hakemistoista, jotka lisätään <targets>:n INTERFACE_INCLUDE_DIRECTORIESkohdeominaisuuteen, kun se viedään komennollainstall(EXPORT). Jos suhteellinen polku on määritetty, sitä käsitellään suhteellisena $<INSTALL_PREFIX>:n suhteen.Tämä on riippumaton muista argumenttiryhmistä eikä varsinaisesti asenna mitään.

Tämän komennon TARGETS-muodon yhdellä kutsulla voidaan määritellä yksi tai useampi ominaisuusryhmä. Kohde voidaan asentaa useammin kuin kerran eri paikkoihin. Tarkastellaan hypoteettisia kohteita myExe,mySharedLib ja myStaticLib. Koodi:

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

asentaa myExe kohteeseen <prefix>/bin ja myStaticLib kohteeseen <prefix>/lib/static. Muilla kuin DLL-alustoilla mySharedLib asennetaan <prefix>/lib:ään ja /some/full/path:ään. DLL-alustoilla mySharedLib DLL asennetaan <prefix>/bin:een ja /some/full/path:ään ja sen tuontikirjasto asennetaan <prefix>/lib/static:een ja /some/full/path:ään.

Vaihtoehto EXPORT yhdistää asennetut kohdetiedostot vientiin nimeltä <export-name>. Sen on oltava ennen RUNTIME,LIBRARY tai ARCHIVE -vaihtoehtoja. Jos haluat asentaa itse vientitiedoston, kutsu install(EXPORT), joka on dokumentoitu alla.

Asennettaessa kohdetiedostoa, jonka EXCLUDE_FROM_ALL-kohdeominaisuus on TRUE, on määrittelemätön käyttäytyminen.

Asennuskohteelle DESTINATION annettu asennuskohde DESTINATION voi käyttää ”generaattorilausekkeita”, joiden syntaksi on $<...>. Katso cmake-generator-expressions(7) käsikirjasta käytettävissä olevat lausekkeet.

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg