qt_extract_metatypes
Extrahiert Metatypen aus einem Qt-Ziel und generiert eine zugehörige „metatypes.json“-Datei.
Der Befehl ist in der Komponente „ Core “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:
find_package(Qt6 REQUIRED COMPONENTS Core)Dieser Befehl wurde in Qt 6.0 eingeführt.
Übersicht
qt_extract_metatypes(target
[MANUAL_MOC_JSON_FILES json_files...]
[OUTPUT_FILES variable_name]
)Wenn versionsunabhängige Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_extract_metatypes() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.
Beschreibung
Bestimmte Operationen sind darauf angewiesen, dass Metatyp-Informationen für Ziele generiert und gesammelt werden. Dies wird in der Regel intern von Qt-Befehlen übernommen, doch in Fällen, in denen dies nicht der Fall ist, kann ` qt_extract_metatypes() ` aufgerufen werden, um die Erfassung dieser Informationen für ein bestimmtes ` target` zu erzwingen.
Metatyp-Informationen werden für die Quelldateien eines Ziels auf eine der folgenden Weisen generiert:
- Automatisch durch AUTOMOC. Der Befehl `
qt_extract_metatypes()` erkennt, wenn AUTOMOC auf dem `target` aktiviert ist, und extrahiert automatisch die benötigten Informationen. - Manuell durch Aufruf von `
moc` mit der Option `--output-json`. Das Projekt ist dafür verantwortlich, alle mit dieser Methode generierten JSON-Dateien zu verwalten und sie mit der Option `MANUAL_MOC_JSON_FILES` an `qt_extract_metatypes()` zu übergeben.
qt_extract_metatypes() erzeugt eine zielspezifische Metatypen-JSON-Datei, die alle Metatyp-Details aus den AUTOMOC- und manuellen MOC-Eingaben zusammenfasst. Dies geschieht durch den Aufruf von ` moc ` mit der Option ` --collect-json `. Wenn Sie wissen möchten, wo sich die resultierende JSON-Datei mit den Metatypen befindet (beispielsweise, um sie an einen anderen Befehl zu übergeben oder zu installieren), geben Sie mit der Option „ OUTPUT_FILES “ den Namen einer Variablen an, in der der absolute Pfad gespeichert werden soll.
Automatische Metatyp-Extraktion
Seit Qt 6.8 wird „ qt_extract_metatypes() “ automatisch als Teil des Finalisierungsschritts für „qt_add_library()“ aufgerufen, sofern Sie „ AUTOMOC “ nicht deaktiviert haben und entweder CMake 3.19 oder höher verwenden oder „qt_finalize_target()“ manuell aufrufen. Dies hat keine Auswirkungen, wenn Sie qt_extract_metatypes() vor der Finalisierung manuell aufgerufen haben, möglicherweise mit benutzerdefinierten Argumenten. Es stellt jedoch sicher, dass die Metatypen auch dann erzeugt werden, wenn Sie dies nicht getan haben. Dies ist wichtig, falls einer der Typen in der Bibliothek irgendwann in der Zukunft als Teil eines QML-Typs verwendet wird, und hat keine Nachteile.
Darüber hinaus ruft ` qt_add_qml_module() ` automatisch ` qt_extract_metatypes() ` für sein Ziel auf.
© 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.