Noi în versiunea 3.13.
Adaugă directoare de legătură la o țintă.
target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])
Specifică căile în care linkerul ar trebui să caute biblioteci atunci când face legătura cu o anumită țintă. Fiecare element poate fi o cale absolută sau relativă,aceasta din urmă fiind interpretată ca fiind relativă la directorul de origine curent. Aceste elemente vor fi adăugate la comanda de creare a legăturii.
Numele <target>
trebuie să fi fost creat de o comandă cum ar fiadd_executable()
sau add_library()
și nu trebuie să fie o țintăALIAS.
Celelalte cuvinte cheie INTERFACE
, PUBLIC
și PRIVATE
sunt necesare pentru a specifica domeniul de aplicare al elementelor care le urmează. Elementele PRIVATE
șiPUBLIC
vor completa proprietatea LINK_DIRECTORIES
din <target>
. Elementele PUBLIC
și INTERFACE
vor completa proprietatea INTERFACE_LINK_DIRECTORIES
din <target>
(țintele IMPORTED acceptă numai elementele INTERFACE
).Fiecare element specifică un director de legătură și va fi convertit într-un drum absolut, dacă este necesar, înainte de a fi adăugat la proprietatea relevantă. Apelurile repetate pentru același <target>
adaugă elementele în ordinea în care au fost apelate.
Dacă este specificat BEFORE
, conținutul va fi adăugat în prealabil la proprietatea relevantă în loc să fie adăugat.
Argumentele la target_link_directories
pot folosi “expresii generatoare” cu sintaxa $<...>
. A se vedea manualul cmake-generator-expressions(7)
pentru expresiile disponibile. Consultați manualul cmake-buildsystem(7)
pentru mai multe informații despre definirea proprietăților sistemului de construcție.
Nota
Această comandă este rareori necesară și ar trebui evitată atunci când există alte opțiuni. Preferați să treceți căile absolute complete de acces la biblioteci atunci când este posibil, deoarece acest lucru asigură că biblioteca corectă va fi întotdeauna legată.Comanda find_library()
furnizează calea completă, care în general poate fi utilizată direct în apelurile către target_link_libraries()
.Situațiile în care poate fi necesară o cale de căutare a bibliotecii includ:
-
Generatoare de proiecte precum Xcode în care utilizatorul poate schimba arhitectura țintă în momentul construirii, dar o cale completă către o bibliotecă nu poate fi utilizată deoarece aceasta oferă doar o singură arhitectură (i.e.g. nu este un binar universal).
-
Bibliotecile pot avea la rândul lor alte dependențe private de bibliotecă care se așteaptă să fie găsite prin mecanismele
RPATH
, dar unele linkere nu sunt capabile să decodifice complet aceste căi (de exemplu, din cauza prezenței unor lucruri cum ar fi$ORIGIN
).