Sur cette page

qt_query_qml_module

Récupère des informations sur un module QML.

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

find_package(Qt6 REQUIRED COMPONENTS Qml)

Cette commande a été introduite dans Qt 6.3.

Synopsis

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 les commandes sans version sont désactivées, utilisez qt6_query_qml_module() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.

Description de la commande

Cette commande est utilisée pour obtenir des informations sur un module QML target. Ce target doit avoir été créé par ou passé à un appel antérieur à qt_add_qml_module(). Le target ne peut pas être une cible importée.

Les informations fournies par cette commande permettent à l'appelant de déployer toutes les parties d'un module QML unique. Le projet doit installer la cible target et la cible de plugin associée (si le module en a une et qu'elle est séparée de la cible target) à l'aide de la commande standard install(TARGETS). Tout le reste peut être déployé avec install(FILES).

Arguments

Chacun des arguments optionnels spécifie le nom d'une variable dans laquelle stocker la propriété correspondante du module QML.

URI et VERSION fournissent respectivement l'uri et la version du module.

PLUGIN_TARGET peut être utilisé pour obtenir le nom de la cible du plugin pour le module QML. Tous les modules QML n'ayant pas de plugin, la valeur renvoyée pour cette option peut être une chaîne vide. Si le module QML n'a pas de cible d'appui séparée, alors target sera la même que la cible du plugin.

TARGET_PATH est le site URI, les points (.) étant remplacés par des barres obliques (/). Il représente le chemin sous le répertoire d'installation du module QML de base où le fichier qmldir de ce module QML (et éventuellement d'autres) doit être déployé. Le répertoire d'installation du module QML sert de chemin d'importation QML où le moteur QML cherchera les modules QML. Le répertoire d'installation du module QML de base par défaut utilisé par qt_generate_deploy_qml_app_script() est qml. Un projet utilisant un script de déploiement peut utiliser QT_DEPLOY_QML_DIR plutôt que de coder en dur cet emplacement (voir aussi QT_DEPLOY_PREFIX).

MODULE_RESOURCE_PATH fournit le chemin de ressources sous lequel les fichiers compilés du module QML peuvent être trouvés. Il est formé à partir du RESOURCE_PREFIX de qt_add_qml_module() concaténé avec le TARGET_PATH du module. La valeur demandée ne doit pas être utilisée pour le déploiement, mais peut être utile pour faire correspondre les chemins d'accès aux ressources avec les emplacements du système de fichiers, si nécessaire.

QMLDIR fournit le chemin d'accès au fichier qmldir. Lors du déploiement du module QML, ce fichier doit être copié dans le chemin cible. Dans un script de déploiement, cet emplacement peut être obtenu en utilisant ${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}.

TYPEINFO fournit le chemin d'accès au fichier typeinfo du module, s'il en a un. Il s'agit d'une chaîne vide si le module n'a pas de fichier d'information sur les types. Le fichier typeinfo doit être déployé dans le même chemin que le fichier qmldir.

QML_FILES fournit une liste de tous les fichiers ajoutés au module QML par l'une des méthodes suivantes :

Tous les fichiers seront enregistrés avec des chemins absolus.

QML_FILES_DEPLOY_PATHS fournit une liste avec exactement le même nombre d'éléments que QML_FILES. Chaque élément de la liste QML_FILES_DEPLOY_PATHS est le chemin sous le chemin cible où l'élément correspondant de QML_FILES doit être déployé. Les chemins d'accès de QML_FILES_DEPLOY_PATHS incluent le nom du fichier, qui peut être différent de celui de QML_FILES en raison de l'utilisation d'alias de ressources (voir QT_RESOURCE_ALIAS).

Les entrées de QML_FILES_DEPLOY_PATHS peuvent également être une chaîne vide. Tout fichier ajouté en utilisant qt_target_qml_sources() avec un PREFIX personnalisé n'aura pas de chemin de déploiement, puisque l'utilisation d'un préfixe personnalisé signifie généralement que le fichier se trouve en dehors du chemin cible du module QML.

QML_FILES_PREFIX_OVERRIDES fournit une autre liste avec exactement le même nombre d'éléments que QML_FILES. Lorsqu'un fichier a été ajouté avec un préfixe personnalisé comme décrit dans le paragraphe précédent, son entrée correspondante dans la liste QML_FILES_PREFIX_OVERRIDES contiendra le préfixe personnalisé utilisé. Pour tous les autres fichiers, leur entrée dans la liste sera une chaîne vide.

Note : Dans un cas particulier, s'il n'y a qu'un seul fichier dans la liste QML_FILES, alors QML_FILES_DEPLOY_PATHS ou QML_FILES_PREFIX_OVERRIDES peut être une chaîne vide selon que ce fichier a un préfixe personnalisé ou non. En effet, la façon dont CMake représente les listes et les chaînes signifie qu'il est impossible de faire la distinction entre une chaîne vide et une liste contenant un seul élément vide.

Les options RESOURCES, RESOURCES_DEPLOY_PATHS, et RESOURCES_PREFIX_OVERRIDES sont analogues à celles de QML_FILES discutées ci-dessus. RESOURCES fournit une liste de tous les fichiers ajoutés au module QML en tant qu'arguments RESOURCES à qt_add_qml_module() ou qt_target_qml_sources(). Tous les chemins seront absolus. La signification et l'utilisation de RESOURCES_DEPLOY_PATHS et RESOURCES_PREFIX_OVERRIDES suivent les mêmes modèles que QML_FILES_DEPLOY_PATHS et QML_FILES_PREFIX_OVERRIDES respectivement.

Exemple

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.