Normaalit kirjastot¶
add_library(<name> )
Lisää kirjastokohteen nimeltä <name>
rakennettavaksi komentokutsussa luetelluista lähdetiedostoista. (Lähdetiedostot voidaan jättää tässä pois, jos ne lisätään myöhemmin komennolla target_sources()
.) <name>
vastaa loogisen kohteen nimeä, ja sen on oltava globaalisti ainutkertainen yhdessä projektissa. Rakennettavan kirjaston varsinainen tiedostonimi muodostetaan natiivialustan konventioiden perusteella (kuten lib<name>.a
tai <name>.lib
).
STATIC
, SHARED
tai MODULE
voidaan antaa luotavan kirjaston tyypin määrittämiseksi. STATIC
-kirjastot ovat objektitiedostojen arkistoja, joita käytetään linkitettäessä muita kohteita. SHARED
-kirjastot linkitetään dynaamisesti ja ladataan suoritusaikana. MODULE
-kirjastot ovat lisäosia, joita ei linkitetä muihin kohteisiin, mutta jotka voidaan ladata dynaamisesti ajonaikana käyttäen dlopenin kaltaista toimintoa. Jos tyyppiä ei anneta eksplisiittisesti, tyyppi on STATIC
tai SHARED
sen mukaan, onko muuttujan BUILD_SHARED_LIBS
nykyinen arvo ON
. SHARED
– jaMODULE
-kirjastoille POSITION_INDEPENDENT_CODE
targetproperty asetetaan automaattisesti ON
:ksi.SHARED
– tai STATIC
-kirjasto voidaan merkitä FRAMEWORK
target-ominaisuudella macOS-kehyksen luomiseksi.
Jos kirjasto ei vie symboleja, sitä ei saa ilmoittaa SHARED
-kirjastoksi. Esimerkiksi Windows-resurssi-DLL:n tai hallitun C++/CLIDLL:n, joka ei vie hallitsemattomia symboleja, pitäisi olla MODULE
-kirjasto.Tämä johtuu siitä, että CMake odottaa SHARED
-kirjastolla olevan aina SHARED
-tuontikirjastoWindowsissa.
Kirjastotiedosto luodaan oletusarvoisesti rakennuspuuhakemistoon, joka vastaa sitä lähdepuuhakemistoa, jossa komento käynnistettiin. Katso ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
jaRUNTIME_OUTPUT_DIRECTORY
kohdeominaisuuksien dokumentaatio tämän sijainnin muuttamiseksi. Katso OUTPUT_NAME
target-ominaisuuden dokumentaatiota lopullisen tiedostonimen <name>
osan muuttamiseksi.
Jos EXCLUDE_FROM_ALL
on annettu, vastaava ominaisuus asetetaan luotuun kohteeseen. Katso lisätietoja EXCLUDE_FROM_ALL
target-ominaisuuden dokumentaatiosta.
Lähdeargumentit add_library
:lle voivat käyttää ”generaattori-lausekkeita”, joiden syntaksi on $<...>
. Katso käytettävissä olevat lausekkeet cmake-generator-expressions(7)
käsikirjasta. Katso cmake-buildsystem(7)
käsikirjasta lisätietoja buildsystem-ominaisuuksien määrittelystä.