target_link_directories¶

Uusi versiossa 3.13.

Linkkihakemistojen lisääminen kohteeseen.

target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])

Määrittää polut, joissa linkitysohjelman tulisi etsiä kirjastoja, kun se linkittää tietyn kohteen. Kukin kohde voi olla absoluuttinen tai suhteellinen polku,joista jälkimmäinen tulkitaan suhteelliseksi nykyiseen lähdehakemistoon nähden. Nämä kohteet lisätään linkkikomentoon.

Nimetty <target> täytyy olla luotu komennolla, kutenadd_executable() tai add_library(), eikä se saa ollaALIAS-kohde.

Avainsanoja INTERFACE, PUBLIC ja PRIVATE tarvitaan määrittelemään niitä seuraavien kohteiden laajuus. PRIVATE– ja -kohteet täyttävät <target>:n LINK_DIRECTORIES-ominaisuuden. PUBLIC– ja INTERFACE-kohteet täyttävät <target>:n INTERFACE_LINK_DIRECTORIES-ominaisuuden (IMPORTED-kohteet tukevat vain INTERFACE-kohteita).Jokainen kohde määrittää linkkihakemiston, ja se muunnetaan tarvittaessa absoluuttiseksi poluksi ennen sen lisäämistä kyseiseen ominaisuuteen. Toistuvat kutsut samalle <target>:lle lisäävät kohteita kutsutussa järjestyksessä.

Jos BEFORE on määritetty, sisältö lisätään kyseiseen ominaisuuteen sen sijaan, että se liitettäisiin.

Argumentit target_link_directories:lle voivat käyttää “generaattorilausekkeita”, 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ä.

Huomautus

Tämä komento on harvoin tarpeellinen, ja sitä tulisi välttää, jos on muita vaihtoehtoja. Anna mieluummin täydelliset absoluuttiset polut kirjastoille, jos mahdollista, koska näin varmistetaan, että oikea kirjasto linkitetään aina.find_library()-komento antaa täydellisen polun, jota voidaan yleensä käyttää suoraan kutsuissa target_link_libraries().Tilanteita, joissa kirjaston hakupolkua saatetaan tarvita, ovat muun muassa:

  • Projektigeneraattorit, kuten Xcode, joissa käyttäjä voi vaihtaa kohdearkkitehtuuria rakentamishetkellä, mutta täydellistä polkua kirjastoon ei voida käyttää, koska se tarjoaa vain yhden arkkitehtuurin (esim.

  • Kirjastoilla voi itselläänkin olla muita yksityisiä kirjastoriippuvuuksia, jotka odotetaan löytyvän RPATH-mekanismien kautta, mutta jotkin linkkerit eivät pysty purkamaan näitä polkuja kokonaan (esim. $ORIGIN:n kaltaisten asioiden vuoksi).

.

Vastaa

Sähköpostiosoitettasi ei julkaista.