qt_extract_metatypes
Extrahiert Metatypen aus einem Qt-Target und erzeugt eine zugehörige metatypes.json-Datei.
Dieser Befehl wurde in Qt 6.0 eingeführt.
Hinweis: Dieser Befehl befindet sich in der Technologievorschau und kann sich in zukünftigen Versionen ändern.
Synopse
qt_extract_metatypes(target [MANUAL_MOC_JSON_FILES json_files...] [OUTPUT_FILES variable_name] )
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_extract_metatypes()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Beschreibung
Bestimmte Operationen sind darauf angewiesen, dass Metatyp-Informationen über Ziele generiert und gesammelt werden. Dies wird normalerweise intern von Qt-Befehlen gehandhabt, aber für Szenarien, in denen dies nicht der Fall ist, kann qt_extract_metatypes()
aufgerufen werden, um die Sammlung dieser Informationen für ein bestimmtes target
zu erzwingen.
Metatyp-Informationen werden für die Quelldateien eines Targets auf eine der folgenden Arten erzeugt:
- Automatisch durch AUTOMOC. Der Befehl
qt_extract_metatypes()
erkennt, wenn AUTOMOC auftarget
aktiviert ist und extrahiert automatisch die benötigten Informationen. - Manuell durch den Aufruf von
moc
mit der Option--output-json
. Das Projekt ist dafür verantwortlich, alle mit dieser Methode erzeugten JSON-Dateien zu speichern und sie mit der OptionMANUAL_MOC_JSON_FILES
anqt_extract_metatypes()
zu übergeben.
qt_extract_metatypes()
erzeugt eine zielspezifische Metatypes-JSON-Datei, die alle Metatyp-Details aus den AUTOMOC- und manuellen moc-Eingaben sammelt. Dies geschieht durch den Aufruf von moc
mit der Option --collect-json
. Wenn Sie wissen müssen, wo die resultierende Metatypes-JSON-Datei zu finden ist (z. B. um sie an einen anderen Befehl zu übergeben oder zu installieren), verwenden Sie die Option OUTPUT_FILES
, um den Namen einer Variablen anzugeben, in der der absolute Pfad gespeichert werden soll.
Automatische Metatyp-Extraktion
Seit Qt 6.8 wird qt_extract_metatypes()
automatisch als Teil des Finalisierungsschrittes für qt_add_library aufgerufen, wenn Sie AUTOMOC
nicht deaktiviert haben und entweder CMake 3.19 oder später verwenden oder qt_finalize_target() manuell aufrufen. Dies hat keine Auswirkung, wenn Sie qt_extract_metatypes()
vor der Finalisierung manuell aufgerufen haben, möglicherweise mit eigenen Argumenten. Es stellt jedoch sicher, dass die Metatypen auch erzeugt werden, wenn Sie dies nicht getan haben. Dies ist wichtig, wenn einer der Typen in der Bibliothek irgendwann in der Zukunft als Teil von QML-Typen verwendet wird und hat keine Nachteile.
Außerdem ruft qt_add_qml_module automatisch qt_extract_metatypes()
für sein Ziel auf.
© 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.