qt_add_plugin
Erzeugt ein Qt-Plugin-Ziel.
Der Befehl ist in der Core
Komponente des Qt6
Pakets definiert, das so geladen werden kann:
find_package(Qt6 REQUIRED COMPONENTS Core)
Dieser Befehl wurde in Qt 6.0 eingeführt.
Zusammenfassung
qt_add_plugin(target [SHARED | STATIC] [CLASS_NAME class_name] [OUTPUT_TARGETS variable_name] [MANUAL_FINALIZATION] sources... )
Die Option MANUAL_FINALIZATION
und die Möglichkeit, Quellen zu setzen, wurden in Qt 6.5 eingeführt.
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_plugin()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Beschreibung
Qt-Plugin-Ziele haben zusätzliche Anforderungen, die über die eines normalen CMake-Bibliotheksziels hinausgehen. Das Kommando qt_add_plugin()
fügt die notwendige Handhabung hinzu, um sicherzustellen, dass diese Anforderungen erfüllt werden. Er sollte anstelle des eingebauten CMake-Befehls add_library()
aufgerufen werden, wenn ein Qt-Plugin-Ziel definiert wird.
Standardmäßig wird das Plugin als STATIC
Bibliothek erstellt, wenn Qt statisch gebaut wurde, oder andernfalls als MODULE
Bibliothek. Sie können diese Vorgabe außer Kraft setzen, indem Sie explizit die Option STATIC
oder SHARED
angeben.
Jede angegebene sources
wird an den internen Aufruf von add_library()
weitergereicht.
Anmerkung: Nicht-statische Plugins sind dafür gedacht, dynamisch zur Laufzeit geladen zu werden, und nicht zur Bauzeit gelinkt zu werden. CMake unterscheidet zwischen diesen beiden Szenarien, indem es den Bibliothekstyp MODULE
für dynamisch geladene Bibliotheken bereitstellt und den Bibliothekstyp SHARED
für Bibliotheken, die direkt gelinkt werden können. Diese Unterscheidung ist für einige Toolchains (vor allem Visual Studio) aufgrund der Art und Weise, wie Symbolexporte gehandhabt werden, wichtig. Es ist unter Umständen nicht möglich, mit MODULE
Bibliotheken zu verknüpfen, und die Erzeugung einer SHARED
Bibliothek ohne exportierte Symbole kann zu Fehlern bei der Erstellung führen. Wenn die Option SHARED
an qt_add_plugin()
übergeben wird, wird daher eher eine MODULE
Bibliothek als eine SHARED
Bibliothek erzeugt.
Jedes Qt-Plugin hat einen Klassennamen. Standardmäßig ist dies derselbe wie der target
, aber er kann mit der Option CLASS_NAME
überschrieben werden. Der Klassenname entspricht dem Namen der C++-Klasse, die die Metadaten für das Plugin deklariert. Bei statischen Plugins ist dies auch der Name, der an Q_IMPORT_PLUGIN übergeben wird, das das Plugin in eine Anwendung importiert und sicherstellt, dass es zur Laufzeit verfügbar ist.
Wenn das Plugin statisch erstellt wird, kann qt_add_plugin()
zusätzliche interne Ziele definieren. Diese erleichtern das automatische Importieren des Plugins für jede ausführbare Datei oder gemeinsam genutzte Bibliothek, die auf das Plugin verweist. Wenn das Projekt das Plugin installiert und beabsichtigt, es für andere Projekte zum Linken verfügbar zu machen, sollte das Projekt auch diese internen Targets installieren. Die Namen dieser Targets können mit der Option OUTPUT_TARGETS
ermittelt werden, gefolgt vom Namen einer Variablen, in der die Target-Liste zurückgegeben werden soll.
Fertigstellung
Nachdem ein Ziel erstellt wurde, sind möglicherweise weitere Verarbeitungs- oder Finalisierungsschritte erforderlich. Die abschließende Verarbeitung wird durch den Befehl qt_finalize_target() durchgeführt.
Details und die Bedeutung der Option MANUAL_FINALIZATION
finden Sie in der Finalisierungsdokumentation für qt_add_library
.
Siehe auch qt_finalize_target() und qt_add_executable().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.