Sur cette page

qt_deploy_qml_imports

Déploie les composants d'exécution des modules QML nécessaires à un exécutable.

La commande est définie dans le composant Qml du paquetage Qt6, qui peut être chargé de cette manière :

find_package(Qt6 REQUIRED COMPONENTS Qml)

Contrairement à la plupart des autres commandes CMake fournies par Qt XML, qt6_deploy_qml_imports ne peut être appelé qu'à partir d'un script de déploiement. Elle ne peut pas être appelée directement par le projet.

Attention : Si vous utilisez une version de CMake inférieure à 3.19, assurez-vous de passer l'option MANUAL_FINALIZATION à qt6_add_executable(), puis appelez qt6_finalize_target() avant d'appeler cette fonction.

Synopsis

qt_deploy_qml_imports(
    TARGET target
    [QML_DIR qml_dir]
    [PLUGINS_FOUND var_name]
    [NO_QT_IMPORTS]
)

Description de la commande

Note : Cette commande n'a généralement pas besoin d'être appelée directement. Elle est utilisée en interne par d'autres commandes de plus haut niveau, mais les projets souhaitant mettre en œuvre une logique de déploiement plus personnalisée peuvent la trouver utile.

Lors de l'installation d'une application qui utilise QML, il peut être difficile de déterminer quels modules QML et quelles parties de ces modules QML doivent également être installés. Comme les plugins QML ne sont pas liés directement à l'exécutable d'une application, qt_deploy_runtime_dependencies() ne trouvera pas ces modules QML. La commande qt6_deploy_qml_imports fournit la logique nécessaire qui complète qt_deploy_runtime_dependencies() et déploie les parties runtime de tous les modules QML importés par l'application.

L'option TARGET est obligatoire et doit spécifier un target qui est un exécutable (sur macOS, il doit s'agir d'un bundle d'application) et également un module QML. Toutes les sources QML qui ont été ajoutées à target via qt_add_qml_module() ou qt_target_qml_sources() seront récursivement analysées pour les importations QML. L'option NO_IMPORT_SCAN ne doit pas avoir été donnée à qt_add_qml_module(). Les fichiers qmldir et les plugins des modules QML importés seront déployés. L'option NO_QT_IMPORTS peut être donnée pour ne pas déployer les modules QML fournis par Qt.

Par défaut, les parties Runtime des modules QML importés seront déployées dans le répertoire Resources/qml pour une cible app bundle macOS, et dans le répertoire qml sous l'emplacement d'installation de base pour les autres plateformes. Pour le cas non-macOS, l'option QML_DIR peut être utilisée pour outrepasser ce choix par défaut.

La commande stockera une liste de tous les plugins QML qu'elle déploie dans la variable nommée par l'option PLUGINS_FOUND, si elle est donnée. Celle-ci est souvent passée comme argument ADDITIONAL_MODULES dans un appel ultérieur à qt_deploy_runtime_dependencies().

Exemple

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

find_package(Qt6 6.3 REQUIRED COMPONENTS Core Qml)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)
qt_add_qml_module(MyApp
    URI Application
    VERSION 1.0
    QML_FILES main.qml MyThing.qml
)

# The following script must only be executed at install time
set(deploy_script "${CMAKE_CURRENT_BINARY_DIR}/deploy_MyApp.cmake")

file(GENERATE OUTPUT ${deploy_script} CONTENT "
include(\"${QT_DEPLOY_SUPPORT}\")
qt_deploy_qml_imports(
    # Deploy QML modules used by MyApp
    TARGET MyApp

    # The found QML plugins are stored in the plugins_found variable
    PLUGINS_FOUND plugins_found

    # The QML modules will be deployed into a custom directory
    QML_DIR \"myqmldir\"

    # Qt QML modules will be skipped, only project-created QML modules will be deployed
    NO_QT_IMPORTS
)
# Deploy application runtime dependencies and runtime dependencies
# of the found QML module plugins.
qt_deploy_runtime_dependencies(
    EXECUTABLE $<TARGET_FILE:MyApp>
    ADDITIONAL_MODULES \${plugins_found}
)
")

install(TARGETS MyApp)
install(SCRIPT ${deploy_script})

Voir aussi qt_generate_deploy_qml_app_script(), qt_deploy_runtime_dependencies(), et QT_DEPLOY_QML_DIR.

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