target_link_directories¶

Neu in Version 3.13.

Hinzufügen von Linkverzeichnissen zu einem Target.

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

Spezifiziert die Pfade, in denen der Linker nach Bibliotheken suchen soll, wenn er ein bestimmtes Target linkt. Jedes Element kann ein absoluter oder relativer Pfad sein, wobei letzteres als relativ zum aktuellen Quellverzeichnis interpretiert wird. Diese Elemente werden dem Link-Befehl hinzugefügt.

Das benannte <target> muss durch einen Befehl wieadd_executable() oder add_library() erstellt worden sein und darf keinALIAS -Ziel sein.

Die Schlüsselwörter INTERFACE, PUBLIC und PRIVATE sind erforderlich, um den Geltungsbereich der ihnen folgenden Elemente zu spezifizieren. Die Elemente PRIVATE und PUBLIC füllen die Eigenschaft LINK_DIRECTORIES von <target>. PUBLIC und INTERFACE füllen die Eigenschaft INTERFACE_LINK_DIRECTORIES von <target> (IMPORTED-Ziele unterstützen nur INTERFACE-Elemente).Jedes Element gibt ein Link-Verzeichnis an und wird gegebenenfalls in einen absoluten Pfad konvertiert, bevor es der entsprechenden Eigenschaft hinzugefügt wird. Wiederholte Aufrufe desselben <target> fügen Elemente in der aufgerufenen Reihenfolge an.

Wenn BEFORE angegeben wird, wird der Inhalt der entsprechenden Eigenschaft vorangestellt, anstatt angehängt zu werden.

Argumente für target_link_directories können “Generatorausdrücke” mit der Syntax $<...> verwenden. Siehe das cmake-generator-expressions(7)Handbuch für verfügbare Ausdrücke. Siehe das cmake-buildsystem(7)Handbuch für mehr über die Definition von Buildsystem-Eigenschaften.

Hinweis

Dieser Befehl ist selten notwendig und sollte vermieden werden, wenn es andere Möglichkeiten gibt. Der Befehl find_library() liefert den vollständigen Pfad, der im Allgemeinen direkt in Aufrufen von target_link_libraries() verwendet werden kann.

  • Projektgeneratoren wie Xcode, bei denen der Benutzer die Zielarchitektur zur Erstellungszeit wechseln kann, aber ein vollständiger Pfad zu einer Bibliothek nicht verwendet werden kann, weil sie nur eine Architektur zur Verfügung stellt (d.h. keine universelle Binärdatei), sind Beispiele für Situationen, in denen ein Bibliothekssuchpfad benötigt wird.

  • Bibliotheken können selbst andere private Bibliotheksabhängigkeiten haben, die über RPATH-Mechanismen gefunden werden sollen, aber einige Linker sind nicht in der Lage, diese Pfade vollständig zu dekodieren (z. B. aufgrund des Vorhandenseins von Dingen wie $ORIGIN).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.