Nieuw in versie 3.13.
Voeg linkdirectories toe aan een target.
target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])
Specificeert de paden waarin de linker moet zoeken naar bibliotheken bij het linken van een gegeven target. Elk item kan een absoluut of relatief pad zijn, waarbij het laatste wordt geïnterpreteerd als relatief ten opzichte van de huidige bronmap. Deze items zullen worden toegevoegd aan het link commando.
De genoemde <target>
moet zijn aangemaakt door een commando zoalsadd_executable()
of add_library()
en mag geenALIAS target zijn.
De INTERFACE
, PUBLIC
en PRIVATE
sleutelwoorden zijn nodig om de scope van de items die erop volgen aan te geven. PRIVATE
en PUBLIC
items zullen de LINK_DIRECTORIES
property van <target>
vullen. PUBLIC
en INTERFACE
items zullen de INTERFACE_LINK_DIRECTORIES
eigenschap van <target>
vullen (IMPORTED targets ondersteunen alleen INTERFACE
items). Elk item specificeert een link directory en zal worden geconverteerd naar een absoluut pad indien nodig voordat het wordt toegevoegd aan de relevante eigenschap. Herhaalde aanroepen voor dezelfde <target>
voegen items toe in de volgorde van aanroepen.
Als BEFORE
is opgegeven, zal de inhoud worden toegevoegd aan de relevante eigenschap in plaats van te worden toegevoegd.
Argumenten voor target_link_directories
kunnen “generator expressies” gebruiken met de syntax $<...>
. Zie de cmake-generator-expressions(7)
-handleiding voor beschikbare expressies. Zie de cmake-buildsystem(7)
handleiding voor meer informatie over het definiëren van bouwsysteemeigenschappen.
Note
Dit commando is zelden nodig en moet worden vermeden als er andere keuzes zijn. Geef liever volledige absolute paden naar bibliotheken door waar mogelijk, omdat dit ervoor zorgt dat altijd de juiste bibliotheek wordt gekoppeld. Het find_library()
commando levert het volledige pad, dat over het algemeen direct kan worden gebruikt in aanroepen naar target_link_libraries()
. Situaties waarin een zoekpad naar een bibliotheek nodig kan zijn, zijn onder andere:
-
Projectgeneratoren zoals Xcode waarbij de gebruiker tijdens het bouwen van doelarchitectuur kan wisselen, maar een volledig pad naar een bibliotheek niet kan worden gebruikt omdat deze slechts één architectuur levert (d.w.z.
-
Bibliotheken kunnen zelf andere private bibliotheekafhankelijkheden hebben die via
RPATH
-mechanismen moeten worden gevonden, maar sommige linkers zijn niet in staat om deze paden volledig te decoderen (bijv. door de aanwezigheid van dingen als$ORIGIN
).