Auf dieser Seite

qt_deploy_qml_imports

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

Der Befehl ist in der Komponente „ Qml “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Qml)

Im Gegensatz zu den meisten anderen von Qt bereitgestellten CMake-Befehlen kann „ qt_deploy_qml_imports “ nur aus einem Deployment-Skript heraus aufgerufen werden. Er kann nicht direkt vom Projekt aus aufgerufen werden.

Warnung: Wenn Sie eine CMake-Version unter 3.19 verwenden, stellen Sie sicher, dass Sie die Option ` MANUAL_FINALIZATION ` an `qt_add_executable()` übergeben und anschließend `qt_finalize_target() ` aufrufen, bevor Sie diese Funktion aufrufen.

Übersicht

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

Beschreibung

Hinweis: Dieser Befehl muss in der Regel nicht direkt aufgerufen werden. Er wird intern von anderen übergeordneten Befehlen verwendet, kann jedoch für Projekte nützlich sein, die eine individuellere Bereitstellungslogik implementieren möchten.

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 mit der ausführbaren Datei einer Anwendung verknüpft sind, findet qt_deploy_runtime_dependencies() diese QML-Module nicht. Der Befehl ` qt_deploy_qml_imports() ` stellt die erforderliche Logik bereit, die ` qt_deploy_runtime_dependencies() ` ergänzt und die Laufzeitkomponenten aller von der Anwendung importierten QML-Module bereitstellt.

Die Option „ TARGET “ ist obligatorisch und sollte eine „ target “ angeben, bei der es sich um eine ausführbare Datei (unter macOS sollte es sich um ein App-Bundle handeln) sowie um ein QML-Modul handelt. Alle QML-Quellen, die über `qt_add_qml_module()` oder `qt_target_qml_sources()` zum „ target “ 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 aus den importierten QML-Modulen werden bereitgestellt. Mit der Option „ NO_QT_IMPORTS “ kann die Bereitstellung von QML-Modulen, die von Qt bereitgestellt werden, übersprungen werden.

Standardmäßig werden die Laufzeitkomponenten importierter QML-Module für ein macOS-App-Bundle-Ziel im Verzeichnis „ Resources/qml “ und für andere Plattformen im Verzeichnis „ qml “ unterhalb des Basisinstallationsverzeichnisses bereitgestellt. Für andere Plattformen als macOS kann die Option „ QML_DIR “ verwendet werden, um diese Standardauswahl zu überschreiben.

Der Befehl speichert eine Liste aller von ihm bereitgestellten QML-Plugins in der Variablen, deren Name durch die Option „ PLUGINS_FOUND “ angegeben wird, sofern diese angegeben ist. Diese wird häufig als Argument „ ADDITIONAL_MODULES “ bei 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.

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