En esta página

qt_query_qml_module

Recupera información sobre un módulo QML.

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

find_package(Qt6 REQUIRED COMPONENTS Qml)

Este comando se introdujo en Qt 6.3.

Sinopsis

qt_query_qml_module(
    target
    [URI uri_var]
    [VERSION version_var]
    [PLUGIN_TARGET plugin_target_var]
    [TARGET_PATH target_path_var]
    [MODULE_RESOURCE_PATH module_resource_path_var]
    [QMLDIR qmldir_var]
    [TYPEINFO typeinfo_var]
    [QML_FILES qml_files_var]
    [QML_FILES_DEPLOY_PATHS qml_files_deploy_paths_var]
    [QML_FILES_PREFIX_OVERRIDES qml_files_prefix_overrides_var]
    [RESOURCES resources_var]
    [RESOURCES_DEPLOY_PATHS resources_deploy_paths_var]
    [RESOURCES_PREFIX_OVERRIDES resources_prefix_overrides_var]
)

Si los comandos sin versión están desactivados, utilice qt6_query_qml_module() en su lugar. Admite el mismo conjunto de argumentos que este comando.

Descripción

Este comando se utiliza para obtener información sobre un módulo QML target. Ese target debe haber sido creado previamente o pasado a una llamada anterior a qt_add_qml_module(). El target no puede ser un objetivo importado.

La información proporcionada por este comando permite a quien lo ejecuta desplegar todas las partes de un único módulo QML. El proyecto debe instalar el target y el objetivo de complemento asociado (si el módulo tiene uno y está separado del target de respaldo) utilizando el comando install(TARGETS) estándar. Todo lo demás puede instalarse con install(FILES).

Argumentos

Cada uno de los argumentos opcionales especifica el nombre de una variable en la que almacenar la correspondiente propiedad del módulo QML.

URI y VERSION proporcionan la uri y la versión del módulo, respectivamente.

PLUGIN_TARGET puede utilizarse para obtener el nombre del plugin de destino del módulo QML. No todos los módulos QML tienen un plugin, por lo que el valor devuelto para esta opción podría ser una cadena vacía. Si el módulo QML no tiene un objetivo de respaldo separado, entonces target será el mismo que el objetivo del plugin.

TARGET_PATH es URI con puntos (.) sustituidos por barras inclinadas (/). Representa la ruta por debajo del directorio de instalación del módulo QML base donde debe desplegarse el archivo qmldir de este módulo QML (y posiblemente otros). El directorio de instalación del módulo QML sirve como ruta de importación de QML donde el motor QML buscará los módulos QML. El directorio base predeterminado de instalación de módulos QML utilizado por qt_generate_deploy_qml_app_script() es qml. Un proyecto que utilice un script de despliegue puede utilizar QT_DEPLOY_QML_DIR en lugar de codificar esta ubicación (véase también QT_DEPLOY_PREFIX).

MODULE_RESOURCE_PATH proporciona la ruta de recursos en la que se encuentran los archivos compilados del módulo QML. Se forma a partir de RESOURCE_PREFIX de qt_add_qml_module() concatenado con TARGET_PATH del módulo. El valor consultado no debe ser utilizado para el despliegue, pero puede ser útil para hacer coincidir las rutas de recursos con las ubicaciones del sistema de archivos, si es necesario.

QMLDIR proporciona la ruta al archivo qmldir. Al desplegar el módulo QML, este archivo debe copiarse en la ruta de destino. En un script de despliegue, esta ubicación puede obtenerse utilizando ${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}.

TYPEINFO proporciona la ruta al archivo typeinfo del módulo, si lo tiene. Será una cadena vacía si el módulo no tiene archivo typeinfo. El archivo typeinfo debe desplegarse en la misma ruta que el archivo qmldir.

QML_FILES proporciona una lista de todos los archivos añadidos al módulo QML a través de uno de los siguientes métodos:

Todos los archivos se registrarán con rutas absolutas.

QML_FILES_DEPLOY_PATHS proporciona una lista con exactamente el mismo número de elementos que QML_FILES. Cada elemento de la lista QML_FILES_DEPLOY_PATHS es la ruta por debajo de la ruta de destino donde debe desplegarse el elemento correspondiente de QML_FILES. Las rutas en QML_FILES_DEPLOY_PATHS incluyen el nombre del archivo, ya que éste podría ser diferente al nombre del archivo en QML_FILES debido al uso de alias de recursos (ver QT_RESOURCE_ALIAS).

Las entradas en QML_FILES_DEPLOY_PATHS también pueden ser una cadena vacía. Cualquier archivo añadido usando qt_target_qml_sources() con un PREFIX personalizado no tendrá ruta de despliegue, ya que el uso de un prefijo personalizado normalmente significa que el archivo se encuentra fuera de la ruta de destino del módulo QML.

QML_FILES_PREFIX_OVERRIDES proporciona otra lista con exactamente el mismo número de elementos que QML_FILES. Si se ha añadido un archivo con un prefijo personalizado como se describe en el párrafo anterior, su entrada correspondiente en la lista QML_FILES_PREFIX_OVERRIDES contendrá el prefijo personalizado utilizado. Para todos los demás ficheros, sus entradas en la lista serán una cadena vacía.

Nota: Como caso especial, si sólo hay un archivo en la lista QML_FILES, entonces QML_FILES_DEPLOY_PATHS o QML_FILES_PREFIX_OVERRIDES puede ser una cadena vacía dependiendo de si ese archivo tiene un prefijo personalizado. Esto se debe a que la forma en que CMake representa listas y cadenas hace que sea imposible distinguir entre una cadena vacía y una lista con un único elemento vacío.

Las opciones RESOURCES, RESOURCES_DEPLOY_PATHS, y RESOURCES_PREFIX_OVERRIDES son análogas a las de QML_FILES comentadas anteriormente. RESOURCES proporciona una lista de todos los archivos añadidos al módulo QML como RESOURCES argumentos a qt_add_qml_module() o qt_target_qml_sources(). Todas las rutas serán absolutas. El significado y uso de RESOURCES_DEPLOY_PATHS y RESOURCES_PREFIX_OVERRIDES sigue los mismos patrones que QML_FILES_DEPLOY_PATHS y QML_FILES_PREFIX_OVERRIDES respectivamente.

Ejemplo

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 6.3 REQUIRED COMPONENTS Core Qml)

set(module_name "MyThings")
qt_add_qml_module(${module_name}
    URI My.Things
    VERSION 1.3
    RESOURCE_PREFIX org.mycompany/imports
    QML_FILES
        First.qml
        Second.qml
    RESOURCES
        Third.txt
)

qt_query_qml_module(${module_name}
    URI module_uri
    VERSION module_version
    PLUGIN_TARGET module_plugin_target
    TARGET_PATH module_target_path
    QMLDIR module_qmldir
    TYPEINFO module_typeinfo
    QML_FILES module_qml_files
    QML_FILES_DEPLOY_PATHS qml_files_deploy_paths
    RESOURCES module_resources
    RESOURCES_DEPLOY_PATHS resources_deploy_paths
)

message("My QML module URI is: ${module_uri}")
message("My QML module version is: ${module_version}")

# Install the QML module backing library
set(staging_prefix "staging")
install(TARGETS ${module_name}
    ARCHIVE DESTINATION "${staging_prefix}/${CMAKE_INSTALL_LIBDIR}"
    LIBRARY DESTINATION "${staging_prefix}/${CMAKE_INSTALL_LIBDIR}"
    RUNTIME DESTINATION "${staging_prefix}/${CMAKE_INSTALL_BINDIR}"
)
set(module_dir "${staging_prefix}/qml/${module_target_path}")

# Install the QML module runtime loadable plugin
install(TARGETS "${module_plugin_target}"
    LIBRARY DESTINATION "${module_dir}"
    RUNTIME DESTINATION "${module_dir}"
)

# Install the QML module meta information.
install(FILES "${module_qmldir}"   DESTINATION "${module_dir}")
install(FILES "${module_typeinfo}" DESTINATION "${module_dir}")

# Install QML files, possibly renamed.
list(LENGTH module_qml_files num_files)
math(EXPR last_index "${num_files} - 1")
foreach(i RANGE 0 ${last_index})
    list(GET module_qml_files       ${i} src_file)
    list(GET qml_files_deploy_paths ${i} deploy_path)
    get_filename_component(dst_name "${deploy_path}" NAME)
    get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
    install(FILES "${src_file}" DESTINATION "${module_dir}/${dest_dir}" RENAME "${dst_name}")
endforeach()

# Install resources, possibly renamed.
list(LENGTH module_resources num_files)
math(EXPR last_index "${num_files} - 1")
foreach(i RANGE 0 ${last_index})
    list(GET module_resources       ${i} src_file)
    list(GET resources_deploy_paths ${i} deploy_path)
    get_filename_component(dst_name "${deploy_path}" NAME)
    get_filename_component(dest_dir "${deploy_path}" DIRECTORY)
    install(FILES "${src_file}" DESTINATION "${module_dir}/${dest_dir}" RENAME "${dst_name}")
endforeach()

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