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 FRAMEWORK
Shared 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>.so
ein „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_DIRECTORIES
Zieleigenschaft 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.