target_link_directories¶

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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.