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 FRAMEWORK
muuttavat 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 FRAMEWORK
jakokirjastokohteen 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>.so
on ”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_SKIP
aiheuttaa 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
– jaSOVERSION
kohdeominaisuuksista lisätietoja versioidun jaetun kirjaston luomisesta.
Komento INCLUDES DESTINATION
määrittää luettelon hakemistoista, jotka lisätään <targets>
:n INTERFACE_INCLUDE_DIRECTORIES
kohdeominaisuuteen, 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.