En esta página

qt_extract_metatypes

Extrae metatypes de un objetivo Qt y genera un archivo metatypes.json asociado.

El comando está definido en el componente Core del paquete Qt6, que puede cargarse de este modo:

find_package(Qt6 REQUIRED COMPONENTS Core)

Este comando se introdujo en Qt 6.0.

Nota: Este comando está en fase de previsualización tecnológica y puede cambiar en futuras versiones.

Sinopsis

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

Si los comandos versionless están deshabilitados, utilice qt6_extract_metatypes() en su lugar. Admite el mismo conjunto de argumentos que este comando.

Descripción

Ciertas operaciones dependen de que se genere y recopile información de metatotipos en los objetivos. Normalmente, esto se gestiona internamente mediante comandos Qt, pero en los casos en los que no sea así, se puede llamar a qt_extract_metatypes() para forzar la recopilación de esta información para un target específico.

La información de metatype se genera para los archivos fuente de un objetivo de una de las siguientes maneras:

  • Automáticamente por AUTOMOC. El comando qt_extract_metatypes() detecta cuando AUTOMOC está activado en target y extraerá automáticamente la información que necesita.
  • Manualmente invocando moc con la opción --output-json. El proyecto es responsable de mantener un registro de todos los archivos JSON generados usando este método y pasándolos a qt_extract_metatypes() con la opción MANUAL_MOC_JSON_FILES.

qt_extract_metatypes() produce un archivo JSON de metatotipos específico del objetivo que recoge todos los detalles de metatotipos de las entradas AUTOMOC y moc manual. Para ello, llama a moc con la opción --collect-json. Si necesitas saber dónde encontrar el archivo JSON de metatotipos resultante (por ejemplo, para pasarlo a otro comando o para instalarlo), utiliza la opción OUTPUT_FILES para proporcionar el nombre de una variable en la que almacenar su ruta absoluta.

Extracción automática de metatepos

Desde Qt 6.8, si no has deshabilitado AUTOMOC y estás usando CMake 3.19 o posterior o estás llamando a qt_finalize_target() manualmente, entonces qt_extract_metatypes() es llamado automáticamente como parte del paso de finalización para qt_add_library. Esto no tiene ningún efecto si ha llamado manualmente a qt_extract_metatypes() antes de la finalización, posiblemente con argumentos personalizados. Sin embargo, se asegura de que los metatipos también se producen si no lo ha hecho. Esto es importante si alguno de los tipos de la biblioteca se utiliza como parte de cualquier tipo QML en cualquier momento en el futuro y no tiene ningún inconveniente.

Además, qt_add_qml_module invoca automáticamente qt_extract_metatypes() para su objetivo.

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