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.