add_library¶

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ä FRAMEWORKtarget-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_ALLtarget-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ä.

Vastaa

Sähköpostiosoitettasi ei julkaista.