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).
.