Novinka ve verzi 3.13.
Přidává adresáře odkazů k cíli.
target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])
Určuje cesty, ve kterých má linker hledat knihovny při linkování daného cíle. Každá položka může být absolutní nebo relativní cesta,přičemž ta druhá je interpretována jako relativní k aktuálnímu zdrojovému adresáři. Tyto položky budou přidány k příkazu link.
Název <target>
musí být vytvořen příkazem jakoadd_executable()
nebo add_library()
a nesmí být cílemALIAS.
Klíčová slova INTERFACE
, PUBLIC
a PRIVATE
jsou vyžadována pro určení rozsahu položek, které za nimi následují. Položky PRIVATE
aPUBLIC
vyplní vlastnost LINK_DIRECTORIES
vlastnosti <target>
. Položky PUBLIC
a INTERFACE
vyplní vlastnostINTERFACE_LINK_DIRECTORIES
vlastnosti <target>
(cíle IMPORTED podporují pouze položky INTERFACE
). každá položka určuje adresář odkazu a v případě potřeby bude před přidáním do příslušné vlastnosti převedena na absolutní cestu. Opakovaná volání pro stejný <target>
připojí položky v pořadí, v jakém byly volány.
Je-li zadáno BEFORE
, bude obsah místo připojení připojen k příslušné vlastnosti.
Argumenty pro target_link_directories
mohou používat “generátorové výrazy “se syntaxí $<...>
. Dostupné výrazy jsou uvedeny v cmake-generator-expressions(7)
příručce. Více informací o definování vlastností buildsystému naleznete v cmake-buildsystem(7)
příručce.
Poznámka
Tento příkaz je zřídkakdy nutný a měl by být vynechán, pokud existují jiné možnosti. Dávejte přednost předávání úplných absolutních cest ke knihovnám, kde je to možné, protože to zajistí, že bude vždy spojena správná knihovna.Příkaz find_library()
poskytuje úplnou cestu, kterou lze obecně použít přímo ve volání příkazu target_link_libraries()
.Mezi situace, kdy může být potřeba cesta k vyhledávání knihovny, patří:
-
Generátory projektů, jako je Xcode, kde uživatel může přepínat cílovouarchitekturu v době sestavování, ale úplnou cestu ke knihovně nelze použít, protože poskytuje pouze jednu architekturu (tj.tj. nejedná se o univerzální binárku).
-
Knihovny mohou samy o sobě mít další soukromé závislosti na knihovnách, které očekávají, že budou nalezeny pomocí mechanismů
RPATH
, ale některé linkery nejsou schopny tyto cesty plně dekódovat (např. kvůli přítomnosti věcí jako$ORIGIN
).
.