Sur cette page

qt_extract_metatypes

Extrait les métatypes d’une cible Qt et génère un fichier metatypes.json associé.

La commande est définie dans le composant « Core » du paquet « Qt6 », qui peut être chargé comme suit :

find_package(Qt6 REQUIRED COMPONENTS Core)

Cette commande a été introduite dans Qt 6.0.

Syntaxe

qt_extract_metatypes(target
    [MANUAL_MOC_JSON_FILES json_files...]
    [OUTPUT_FILES variable_name]
)

Si les commandes sans version sont désactivées, utilisez plutôt qt6_extract_metatypes(). Elle prend en charge le même ensemble d’arguments que cette commande.

Description

Certaines opérations reposent sur la génération et la collecte d’informations de métatype sur les cibles. Cette tâche est généralement gérée en interne par les commandes Qt, mais dans les cas où ce n’est pas le cas, la commande ` qt_extract_metatypes() ` peut être appelée pour forcer la collecte de ces informations pour une cible ` target` spécifique.

Les informations de métatype sont générées pour les fichiers source d’une cible de l’une des manières suivantes :

  • Automatiquement par AUTOMOC. La commande qt_extract_metatypes() détecte si AUTOMOC est activé sur l’ target et extrait automatiquement les informations dont elle a besoin.
  • Manuellement, en appelant la commande ` moc ` avec l’option ` --output-json `. Le projet est chargé de répertorier tous les fichiers JSON générés à l’aide de cette méthode et de les transmettre à ` qt_extract_metatypes() ` avec l’option ` MANUAL_MOC_JSON_FILES `.

qt_extract_metatypes() génère un fichier JSON de métatypes spécifique à la cible qui rassemble toutes les informations de métatypes issues des entrées AUTOMOC et des entrées manuelles moc. Pour ce faire, il appelle moc avec l’option --collect-json. Si vous avez besoin de savoir où se trouve le fichier JSON de métatypes obtenu (par exemple, pour le transmettre à une autre commande ou pour l’installer), utilisez l’option « OUTPUT_FILES » pour indiquer le nom d’une variable dans laquelle stocker son chemin d’accès absolu.

Extraction automatique des métatypes

Depuis Qt 6.8, si vous n’avez pas désactivé l’option « AUTOMOC » et que vous utilisez CMake 3.19 ou une version ultérieure, ou que vous appelez manuellement la fonction `qt_finalize_target()`, alors ` qt_extract_metatypes() ` est automatiquement appelée dans le cadre de l’étape de finalisation de `qt_add_library()`. Cela n'a aucun effet si vous avez appelé manuellement ` qt_extract_metatypes() ` avant la finalisation, éventuellement avec des arguments personnalisés. Cependant, cela garantit que les métatypes sont également générés si vous ne l'avez pas fait. Ceci est important si l'un des types de la bibliothèque est utilisé dans le cadre de types QML à l'avenir, et ne présente aucun inconvénient.

De plus, ` qt_add_qml_module() ` appelle automatiquement ` qt_extract_metatypes() ` pour sa cible.

© 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.