target_link_directories¶

Nuovo nella versione 3.13.

Aggiungi directory di collegamento a un target.

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

Specifica i percorsi in cui il linker dovrebbe cercare le librerie quando collega un dato target. Ogni elemento può essere un percorso assoluto o relativo, con quest’ultimo interpretato come relativo alla directory di origine corrente. Questi elementi saranno aggiunti al comando di collegamento.

Il nome <target> deve essere stato creato da un comando comeadd_executable() o add_library() e non deve essere un obiettivoALIAS.

Le parole chiave INTERFACE, PUBLIC e PRIVATE sono richieste per specificare lo scopo degli elementi che le seguono. Gli elementi PRIVATE e PUBLIC popoleranno la proprietà LINK_DIRECTORIES di <target>. Gli elementi PUBLIC e INTERFACE popoleranno la proprietàINTERFACE_LINK_DIRECTORIES di <target> (gli obiettivi IMPORTED supportano solo gli elementi INTERFACE). Ogni elemento specifica una directory di collegamento e sarà convertito in un percorso assoluto, se necessario, prima di aggiungerlo alla proprietà pertinente. Richiami ripetuti per lo stesso <target> aggiungono elementi nell’ordine chiamato.

Se è specificato BEFORE, il contenuto sarà aggiunto alla proprietà pertinente invece di essere aggiunto.

Gli argomenti di target_link_directories possono usare “espressioni generatrici” con la sintassi $<...>. Vedere il cmake-generator-expressions(7)manuale per le espressioni disponibili. Vedere il manuale cmake-buildsystem(7)per maggiori informazioni sulla definizione delle proprietà del sistema di compilazione.

Nota

Questo comando è raramente necessario e dovrebbe essere evitato dove ci sono altre scelte. Il comando find_library() fornisce il percorso completo, che generalmente può essere usato direttamente nelle chiamate a target_link_libraries().Situazioni in cui può essere necessario un percorso di ricerca della libreria includono:

  • Generatori di progetti come Xcode dove l’utente può cambiare l’architettura di destinazione al momento della compilazione, ma un percorso completo di una libreria non può essere usato perché fornisce solo un’architettura (cioè non è un binario universale).Cioè non è un binario universale).

  • Le librerie possono avere altre dipendenze private che si aspettano di essere trovate tramite i meccanismi RPATH, ma alcuni linker non sono in grado di decodificare completamente questi percorsi (ad esempio a causa della presenza di cose come $ORIGIN).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.