Installing Targets¶

install(TARGETS targets... ] ] ] )

Das TARGETS-Formular gibt Regeln für die Installation von Targets aus einem Projekt an. Es gibt fünf Arten von Zieldateien, die installiert werden können: ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK und BUNDLE.Ausführbare Dateien werden als RUNTIME-Ziele behandelt, mit der Ausnahme, dass diejenigen, die mit der Eigenschaft MACOSX_BUNDLE gekennzeichnet sind, unter OS X als BUNDLE-Ziele behandelt werden. Statische Bibliotheken werden als ARCHIVE-Ziele behandelt, außer diejenigen, die mit der Eigenschaft FRAMEWORK gekennzeichnet sind, werden unter OS X als FRAMEWORK-Ziele behandelt.Modulbibliotheken werden immer als LIBRARY-Ziele behandelt.Für Nicht-DLL-Plattformen werden gemeinsam genutzte Bibliotheken als LIBRARY-Ziele behandelt, außer diejenigen, die mit der Eigenschaft FRAMEWORK gekennzeichnet sind, werden unter OS X als FRAMEWORK-Ziele behandelt. Bei DLL-Plattformen wird der DLL-Teil einer gemeinsam genutzten Bibliothek als RUNTIME-Ziel und die entsprechende Importbibliothek als ARCHIVE-Ziel behandelt.Alle Windows-basierten Systeme, einschließlich Cygwin, sind DLL-Plattformen.Die Argumente ARCHIVE, LIBRARY, RUNTIME und FRAMEWORK ändern den Typ des Ziels, für den die nachfolgenden Eigenschaften gelten.Wenn keines angegeben wird, gelten die Installationseigenschaften für alle Zieltypen. Wenn nur eines angegeben wird, werden nur Ziele dieses Typs installiert (was verwendet werden kann, um nur eine DLL oder nur eine Importbibliothek zu installieren).

Die Argumente PRIVATE_HEADER, PUBLIC_HEADER und RESOURCE bewirken, dass die nachfolgenden Eigenschaften auf die Installation der zugehörigen Dateien einer FRAMEWORKShared Library auf Nicht-Apple-Plattformen angewendet werden. Regeln, die durch diese Argumente definiert werden, werden auf Apple-Plattformen ignoriert, da die zugehörigen Dateien an den entsprechenden Stellen innerhalb des Framework-Ordners installiert werden. Siehe Dokumentation derPRIVATE_HEADER, PUBLIC_HEADER undRESOURCE Zieleigenschaften für Details.

Etweder NAMELINK_ONLY oder NAMELINK_SKIP kann als eineLIBRARY Option angegeben werden. Auf einigen Plattformen hat eine versionierte Shared Library einen symbolischen Link wie:

lib<name>.so -> lib<name>.so.1

wobei lib<name>.so.1 der Name der Library ist und lib<name>.soein „namelink“ ist, der es Linkern erlaubt, die Library zu finden, wenn-l<name> angegeben wird. Die Option NAMELINK_ONLY bewirkt, dass nur der Namelink installiert wird, wenn ein Bibliotheksziel installiert wird. Die Option NAMELINK_SKIP veranlasst die Installation von anderen Bibliotheksdateien als dem namelink, wenn ein Bibliotheksziel installiert wird. Wenn keine der beiden Optionen angegeben wird, werden beide Teile installiert. Auf Plattformen, auf denen versionierte Shared Libraries keine Namelinks haben oder wenn eine Library nicht versioniert ist, installiert die Option NAMELINK_SKIP die Library und die Option NAMELINK_ONLY installiert nichts. Siehe die VERSION undSOVERSION Zieleigenschaften für Details zum Erstellen von versionierten Shared Libraries.

Das INCLUDES DESTINATION gibt eine Liste von Verzeichnissen an, die zur INTERFACE_INCLUDE_DIRECTORIESZieleigenschaft der <targets> hinzugefügt werden, wenn sie durch deninstall(EXPORT) Befehl exportiert werden. Wenn ein relativer Pfad angegeben wird, wird er als relativ zu $<INSTALL_PREFIX> behandelt.

Eine oder mehrere Gruppen von Eigenschaften können in einem einzigen Aufruf der TARGETS-Form dieses Befehls angegeben werden. Ein Ziel kann mehr als einmal an verschiedenen Orten installiert werden. Betrachten Sie die hypothetischen Ziele myExe,mySharedLib und myStaticLib. Der Code:

install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)

installiert myExe nach <prefix>/bin und myStaticLib nach<prefix>/lib/static. Auf Nicht-DLL-Plattformen wird mySharedLib auf <prefix>/lib und /some/full/path installiert. Auf DLL-Plattformen wird die mySharedLib-DLL nach <prefix>/bin und /some/full/path und ihre Importbibliothek nach <prefix>/lib/static und /some/full/path installiert.

Die Option EXPORT verbindet die installierten Zieldateien mit einem Export namens <export-name>. Sie muss vor den Optionen RUNTIME,LIBRARY oder ARCHIVE stehen. Um die Exportdatei selbst zu installieren, rufen Sie install(EXPORT) auf, wie unten dokumentiert.

Die Installation eines Ziels mit der EXCLUDE_FROM_ALL Zieleigenschaft TRUE hat ein undefiniertes Verhalten.

Das Installationsziel, das der Zielinstallation DESTINATION übergeben wird, kann „Generatorausdrücke“ mit der Syntax $<...> verwenden. Siehe dascmake-generator-expressions(7) Handbuch für verfügbare Ausdrücke.

admin

Schreibe einen Kommentar

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

lg