qt_add_qml_plugin
Definiert ein Plugin, das einem QML-Modul zugeordnet ist.
Der Befehl ist in der Komponente „ Qml “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:
find_package(Qt6 REQUIRED COMPONENTS Qml)Übersicht
qt_add_qml_plugin(
target
[BACKING_TARGET backing_target]
[STATIC | SHARED]
[OUTPUT_DIRECTORY]
[URI]
[CLASS_NAME]
[NO_GENERATE_PLUGIN_SOURCE]
[NAMESPACE namespace]
)Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_qml_plugin() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.
Beschreibung
Dieser Befehl erstellt das mit einem QML-Modul verknüpfte Plugin-Ziel. Normalerweise wird er intern von `qt_add_qml_module()` aufgerufen, um das mit dem zugrunde liegenden Ziel verknüpfte Plugin zu erstellen oder zu aktualisieren. Sie sollten diese Funktion nicht direkt aufrufen, es sei denn, es liegen besondere Umstände vor, die eine spezielle Erstellung des Ziels erfordern.
Die Dokumentation zu ` qt_add_qml_module() ` beschreibt verschiedene Strukturmuster, wie die mit einem QML-Modul verbundenen CMake-Ziele angeordnet werden können. Beachten Sie, dass Sie auch dann, wenn das QML-Modul kein separates zugrunde liegendes Ziel hat und die gesamte Funktionalität direkt im Plugin implementiert ist (was nicht die empfohlene Vorgehensweise ist), dennoch `qt_add_qml_module()` anstelle von ` qt_add_qml_plugin()` aufrufen sollten.
Argumente
Das „ target “ gibt den Namen des für das QML-Plugin zu verwendenden Ziels an. Falls es noch nicht existiert, wird es erstellt.
BACKING_TARGET Gibt den Namen des zugrunde liegenden Ziels an, mit dem das Plugin verknüpft ist. Das zugrunde liegende Ziel kann mit dem Plugin- target übereinstimmen; in diesem Fall gibt es nur ein einziges zusammengeführtes Ziel, was jedoch in der Regel nicht empfohlen wird (weitere Informationen finden Sie unter ` qt_add_qml_module() `). ` BACKING_TARGET ` sollte immer angegeben werden, es sei denn, es liegen besondere Umstände vor, die erfordern, dass das Plugin-Ziel vor dem zugrunde liegenden Ziel erstellt wird. Wird BACKING_TARGET nicht angegeben, muss die Option „ URI “ angegeben werden.
Standardmäßig wird das Plugin mit einem Typ erstellt, der mit dem zugrunde liegenden Ziel kompatibel ist. Ist das zugrunde liegende Ziel eine statische Bibliothek, wird das Plugin ebenfalls als statische Bibliothek erstellt. Ist das zugrunde liegende Ziel eine gemeinsam genutzte Bibliothek, wird das Plugin als Modulbibliothek erstellt. Wird kein zugrunde liegendes Ziel angegeben oder verfügt das Plugin über kein separates zugrunde liegendes Ziel, kann der Plugin-Typ entweder mit den Schlüsselwörtern „ STATIC “ oder „ SHARED “ festgelegt werden. Wird der Plugin-Typ durch keine der vorgenannten Bedingungen bestimmt, wird ein statisches Plugin erstellt, sofern Qt als statische Bibliotheken kompiliert wurde; andernfalls wird ein Modulbibliotheks-Plugin erstellt.
OUTPUT_DIRECTORY Gibt das Verzeichnis an, in dem die Plugin-Bibliothek erstellt wird. Es sollte immer derselbe Speicherort sein wie in der `qmldir` -Datei des QML-Moduls. Wenn ` OUTPUT_DIRECTORY ` nicht angegeben wird, wird der Pfad aus den im ` BACKING_TARGET` gespeicherten Informationen ermittelt, sofern diese verfügbar sind. Beachten Sie, dass dies vom Verzeichnis der eigenen Bibliothek des zugrunde liegenden Ziels abweichen kann. Kann kein Ausgabeverzeichnis vom zugrunde liegenden Ziel ermittelt werden, wird standardmäßig „ CMAKE_CURRENT_BINARY_DIR “ verwendet.
URI Deklariert die Modul-ID des QML-Moduls, mit dem dieses Plugin verknüpft ist. Die Modul-Kennung ist die (in gepunkteter URI-Notation) Kennung für das QML-Modul. Wenn URI nicht angegeben wird, muss ein BACKING_TARGET bereitgestellt werden, und die URI des zugrunde liegenden Ziels muss dort hinterlegt sein (in der Regel durch einen früheren Aufruf von qt_add_qml_module()).
Jedes Plugin sollte über eine C++-Klasse verfügen, die das Modul bei der QML-Engine registriert. Standardmäßig generiert „ qt_add_qml_plugin() “ automatisch die Quelldateien für diese C++-Klasse und fügt sie der Quelldateiliste des „ target “ hinzu. Die generierte Plugin-Klasse erfüllt die Anforderungen, dass das Plugin optional ist (siehe „Moduldefinition – qmldir-Dateien“). Der Klassenname wird wie folgt bestimmt:
- Wenn `
CLASS_NAME` angegeben wurde, wird dieser Name verwendet. Er muss mit dem Namen übereinstimmen, der in der Datei `qmldir` des QML-Moduls verwendet wird. - Wenn
CLASS_NAMEnicht angegeben wurde, aberBACKING_TARGETvorhanden ist, wird der C++-Klassenname aus den für dieses zugrunde liegende Ziel gespeicherten Details übernommen. Diese Details werden in der Regel durch einen früheren Aufruf von `qt_add_qml_module()` gespeichert und stimmen mit dem Namen überein, der in der generierten Datei `qmldir` verwendet wird. Dies ist in den meisten Fällen die empfohlene Vorgehensweise zur Angabe des Klassennamens. - Kann der Klassenname dennoch nicht ermittelt werden, wird er auf die URI des Moduls gesetzt, wobei Punkte durch Unterstriche ersetzt und „
Plugin“ angehängt wird.
Wird ein Namespace mit dem Schlüsselwort „ NAMESPACE “ angegeben, wird der Plugin-Code in einem C++-Namespace mit diesem Namen generiert.
Bei einigen Plugins muss die Plugin-Klasse möglicherweise manuell geschrieben werden. Beispielsweise muss das Plugin möglicherweise zusätzliche Initialisierungen durchführen oder Elemente registrieren, die von der Standard-Plugin-Klasse nicht implementiert sind. In solchen Fällen kann die Option „ NO_GENERATE_PLUGIN_SOURCE “ angegeben werden. Sie sind dann dafür verantwortlich, Ihre eigene C++-Plugin-Klasse zu schreiben und sie der Datei „ target “ hinzuzufügen. Beachten Sie, dass es sehr unwahrscheinlich ist, dass das Plugin optional sein kann, wenn Sie eine eigene Plugin-Klasse schreiben müssen. Dies bedeutet wiederum, dass das Schlüsselwort „ NO_PLUGIN_OPTIONAL “ beim Aufruf von `qt_add_qml_module()` bei der Definition des QML-Moduls enthalten sein sollte; andernfalls ist die generierte Datei ` qmldir ` fehlerhaft. Stellen Sie sicher, dass Ihre Plugin-Klasse denselben Klassennamen verwendet, wie er sich aus der obigen Logik ergibt.
© 2026 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.