qt_deploy_qml_imports

Stellt die Laufzeitkomponenten von QML-Modulen bereit, die von einer ausführbaren Datei benötigt werden.

Der Befehl ist in der Komponente Qml des Pakets Qt6 definiert, das auf diese Weise geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Qml)

Im Gegensatz zu den meisten anderen CMake-Befehlen, die von Qt bereitgestellt werden, kann qt6_deploy_qml_imports nur von einem Deployment-Skript aufgerufen werden. Es kann nicht direkt vom Projekt aufgerufen werden.

Warnung: Wenn Sie eine CMake-Version kleiner als 3.19 verwenden, stellen Sie sicher, dass Sie die Option MANUAL_FINALIZATION an qt6_add_executable() übergeben und dann qt6_finalize_target() aufrufen, bevor Sie diese Funktion aufrufen.

Synopse

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

Beschreibung

Hinweis: Dieser Befehl muss normalerweise nicht direkt aufgerufen werden. Er wird intern von anderen Befehlen auf höherer Ebene verwendet, aber Projekte, die eine individuellere Deployment-Logik implementieren wollen, könnten ihn nützlich finden.

Bei der Installation einer Anwendung, die QML verwendet, kann es nicht trivial sein, herauszufinden, welche QML-Module und welche Teile dieser QML-Module ebenfalls installiert werden müssen. Da QML-Plugins nicht direkt in die ausführbare Datei einer Anwendung gelinkt werden, findet qt_deploy_runtime_dependencies() diese QML-Module nicht. Der Befehl qt6_deploy_qml_imports stellt die notwendige Logik zur Verfügung, die qt_deploy_runtime_dependencies() ergänzt und die Laufzeitteile aller von der Anwendung importierten QML-Module bereitstellt.

Die Option TARGET ist obligatorisch und sollte ein target angeben, das eine ausführbare Datei (unter macOS sollte es ein App-Bundle sein) und auch ein QML-Modul ist. Alle QML-Quellen, die dem target über qt_add_qml_module() oder qt_target_qml_sources() hinzugefügt wurden, werden rekursiv nach QML-Importen durchsucht. Die Option NO_IMPORT_SCAN darf nicht an qt_add_qml_module() übergeben worden sein. Die qmldir Dateien und Plugins der importierten QML-Module werden eingesetzt. Die Option NO_QT_IMPORTS kann angegeben werden, um die Bereitstellung von QML-Modulen zu überspringen, die von Qt bereitgestellt werden.

Standardmäßig werden die Runtime-Teile von importierten QML-Modulen in das Verzeichnis Resources/qml für ein macOS-App-Bundle-Ziel und in das Verzeichnis qml unter dem Basisinstallationsort für andere Plattformen bereitgestellt. Für den Fall, dass es sich nicht um macOS handelt, kann die Option QML_DIR verwendet werden, um diese Standardauswahl außer Kraft zu setzen.

Der Befehl speichert eine Liste aller QML-Plugins, die er bereitstellt, in der Variablen mit dem Namen der Option PLUGINS_FOUND, falls angegeben. Diese wird oft als ADDITIONAL_MODULES Argument in einem nachfolgenden Aufruf von qt_deploy_runtime_dependencies() übergeben.

Beispiel

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})

Siehe auch qt_generate_deploy_qml_app_script(), qt_deploy_runtime_dependencies(), und QT_DEPLOY_QML_DIR.

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