qt_query_qml_module
Informationen zu einem QML-Modul abrufen.
Der Befehl ist in der Komponente „ Qml “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:
find_package(Qt6 REQUIRED COMPONENTS Qml)Dieser Befehl wurde in Qt 6.3 eingeführt.
Übersicht
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]
)Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_query_qml_module() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.
Beschreibung
Dieser Befehl dient dazu, Informationen über ein QML-Modul ` target` abzurufen. Dieses ` target ` muss zuvor durch einen früheren Aufruf von ` qt_add_qml_module()` erstellt oder an diesen übergeben worden sein. Das ` target ` darf kein importiertes Ziel sein.
Die von diesem Befehl bereitgestellten Informationen ermöglichen es dem Aufrufer, alle Teile eines einzelnen QML-Moduls bereitzustellen. Das Projekt sollte das „ target “ und das zugehörige Plugin-Ziel (sofern das Modul über eines verfügt und dieses vom zugrunde liegenden „ target “ getrennt ist) mithilfe des Standardbefehls „install(TARGETS)“ installieren. Alles andere kann mit „install(FILES)“ bereitgestellt werden.
Argumente
Jedes der optionalen Argumente gibt den Namen einer Variablen an, in der die entsprechende QML-Modul-Eigenschaft gespeichert werden soll.
URI und „ VERSION “ liefern jeweils die URI und die Version des Moduls.
PLUGIN_TARGET kann verwendet werden, um den Namen des Plugin-Ziels für das QML-Modul abzurufen. Da nicht alle QML-Module über ein Plugin verfügen, kann der für diese Option zurückgegebene Wert eine leere Zeichenfolge sein. Verfügt das QML-Modul über kein separates Backing-Ziel, entspricht target dem Plugin-Ziel.
TARGET_PATH ist das „ URI “, bei dem Punkte (.) durch Schrägstriche (/) ersetzt wurden. Es stellt den Pfad unterhalb des Basisinstallationsverzeichnisses des QML-Moduls dar, in dem die Datei „ qmldir “ dieses QML-Moduls (und möglicherweise weitere) bereitgestellt werden soll. Das Installationsverzeichnis des QML-Moduls dient als QML-Importpfad, in dem die QML-Engine nach QML-Modulen sucht. Das von `qt_generate_deploy_qml_app_script()` verwendete Standard-Basisinstallationsverzeichnis für QML-Module ist ` qml`. Ein Projekt, das ein Bereitstellungsskript verwendet, kann `QT_DEPLOY_QML_DIR ` anstelle einer festen Codierung dieses Speicherorts verwenden (siehe auch `QT_DEPLOY_PREFIX`).
MODULE_RESOURCE_PATH Gibt den Ressourcenpfad an, unter dem die in das QML-Modul kompilierten Dateien zu finden sind. Er setzt sich zusammen aus dem Wert von ` RESOURCE_PREFIX ` aus ` qt_add_qml_module()` und dem Wert von ` TARGET_PATH` des Moduls. Der abgefragte Wert sollte nicht für die Bereitstellung verwendet werden, kann aber bei Bedarf hilfreich sein, um Ressourcenpfade mit Speicherorten im Dateisystem abzugleichen.
QMLDIR Liefert den Pfad zur Datei ` qmldir `. Bei der Bereitstellung des QML-Moduls sollte diese Datei in den Zielpfad kopiert werden. In einem Bereitstellungsskript kann dieser Speicherort mithilfe von ` ${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}` ermittelt werden.
TYPEINFO Liefert den Pfad zur Typeinfo-Datei des Moduls, sofern vorhanden. Ist keine Typeinfo-Datei vorhanden, ist der Wert eine leere Zeichenkette. Die Typeinfo-Datei sollte in denselben Pfad wie die Datei „ qmldir “ bereitgestellt werden.
QML_FILES Liefert eine Liste aller Dateien, die dem QML-Modul über eine der folgenden Methoden hinzugefügt wurden:
- Als „
QML_FILES“-Argumente in ` qt_add_qml_module()`. - Als „
FILES“-Argumente in ` qt_target_qml_sources()`.
Alle Dateien werden mit absoluten Pfaden erfasst.
QML_FILES_DEPLOY_PATHS Liefert eine Liste mit genau derselben Anzahl an Elementen wie „ QML_FILES “. Jedes Element der Liste „ QML_FILES_DEPLOY_PATHS “ ist der Pfad unterhalb des Zielpfads, unter dem das entsprechende Element von „ QML_FILES “ bereitgestellt werden soll. Die Pfade in „ QML_FILES_DEPLOY_PATHS “ enthalten den Dateinamen, da dieser aufgrund der Verwendung von Ressourcenaliasen (siehe QT_RESOURCE_ALIAS) vom Dateinamen in „ QML_FILES “ abweichen kann.
Einträge in QML_FILES_DEPLOY_PATHS können auch eine leere Zeichenkette sein. Jede Datei, die mit qt_target_qml_sources() unter Verwendung eines benutzerdefinierten Präfixes ( PREFIX ) hinzugefügt wurde, hat keinen Bereitstellungspfad, da die Verwendung eines benutzerdefinierten Präfixes in der Regel bedeutet, dass sich die Datei außerhalb des Zielpfads des QML-Moduls befindet.
QML_FILES_PREFIX_OVERRIDES stellt eine weitere Liste mit genau derselben Anzahl an Elementen wie „ QML_FILES “ bereit. Wenn eine Datei wie im vorangehenden Absatz beschrieben mit einem benutzerdefinierten Präfix hinzugefügt wurde, enthält der entsprechende Eintrag in der Liste „ QML_FILES_PREFIX_OVERRIDES “ das verwendete benutzerdefinierte Präfix. Bei allen anderen Dateien sind die Listeneinträge eine leere Zeichenkette.
Hinweis: Als Sonderfall gilt: Befindet sich nur eine Datei in der Liste „ QML_FILES “, kann „ QML_FILES_DEPLOY_PATHS “ oder „ QML_FILES_PREFIX_OVERRIDES “ eine leere Zeichenkette sein, je nachdem, ob diese Datei ein benutzerdefiniertes Präfix hat. Dies liegt daran, dass es aufgrund der Art und Weise, wie CMake Listen und Zeichenketten darstellt, unmöglich ist, zwischen einer leeren Zeichenkette und einer Liste mit einem einzigen leeren Element zu unterscheiden.
Die Optionen „ RESOURCES “, „ RESOURCES_DEPLOY_PATHS “ und „ RESOURCES_PREFIX_OVERRIDES “ entsprechen denen für „ QML_FILES “, die oben erläutert wurden. „ RESOURCES “ liefert eine Liste aller Dateien, die dem QML-Modul als „ RESOURCES “-Argumente entweder an „qt_add_qml_module()“ oder an „qt_target_qml_sources()“ übergeben wurden. Alle Pfade sind absolut. Die Bedeutung und Verwendung von „ RESOURCES_DEPLOY_PATHS “ und „ RESOURCES_PREFIX_OVERRIDES “ folgt denselben Mustern wie „ QML_FILES_DEPLOY_PATHS “ bzw. „ QML_FILES_PREFIX_OVERRIDES “.
Beispiel
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.