target_link_directories¶

Új a 3.13-as verzióban.

Linkkönyvtárak hozzáadása egy targethez.

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

Meghatározza az elérési utakat, amelyekben a linkelőnek könyvtárakat kell keresnie, amikor egy adott targetet linkel. Minden elem lehet abszolút vagy relatív elérési útvonal,az utóbbit az aktuális forráskönyvtárhoz viszonyítva értelmezi. Ezek az elemek hozzá lesznek adva a link parancshoz.

A megnevezett <target>-nek egy olyan paranccsal kell létrejönnie, mint aadd_executable() vagy a add_library(), és nem lehetALIAS cél.

A INTERFACE, PUBLIC és PRIVATE kulcsszavak szükségesek az őket követő elemek hatókörének meghatározásához. A PRIVATE és PUBLIC elemek feltöltik a <target> LINK_DIRECTORIES tulajdonságát. Az PUBLIC és INTERFACE elemek a <target> INTERFACE_LINK_DIRECTORIES tulajdonságát töltik fel (az IMPORTED célok csak a INTERFACE elemeket támogatják).Minden elem egy linkkönyvtárat ad meg, és szükség esetén abszolút elérési úttá konvertálódik, mielőtt a megfelelő tulajdonsághoz hozzáadjuk. Ugyanannak a <target>-nek az ismételt hívása a hívás sorrendjében csatolja az elemeket.

Ha BEFORE van megadva, akkor a tartalom előzetesen hozzá lesz csatolva a vonatkozó tulajdonsághoz ahelyett, hogy hozzá lenne csatolva.

A target_link_directories-nak az argumentumai használhatnak “generátor kifejezéseket “a $<...> szintaxissal. A rendelkezésre álló kifejezéseket lásd a cmake-generator-expressions(7)kézikönyvben. A cmake-buildsystem(7)kézikönyvben olvashat bővebben a buildsystem tulajdonságok definiálásáról.

Megjegyzés

Ez a parancs ritkán szükséges, és kerülendő, ha van más lehetőség is. Ahol lehetséges, inkább a könyvtárak teljes abszolút elérési útvonalát adja meg, mivel ez biztosítja, hogy mindig a megfelelő könyvtár lesz linkelve.A find_library() parancs megadja a teljes elérési utat, amely általában közvetlenül használható a target_link_libraries() hívásában.Olyan helyzetek, amikor szükség lehet a könyvtár keresési útvonalára:

  • Projektgenerátorok, mint az Xcode, ahol a felhasználó építésekor célarchitektúrát válthat, de egy könyvtár teljes elérési útvonalát nem lehet használni, mert csak egy architektúrát biztosít (i.azaz nem univerzális bináris).

  • A könyvtáraknak maguknak is lehetnek más privát könyvtárfüggőségeik, amelyek a RPATH mechanizmusokon keresztül várják, hogy megtalálják őket, de egyes linkerek nem képesek teljes mértékben dekódolni ezeket az útvonalakat (pl. az olyan dolgok miatt, mint a $ORIGIN).

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.