qt_abfrage_qml_modul
Abrufen von Informationen über ein QML-Modul.
Der Befehl ist in der Qml
Komponente des Qt6
Pakets definiert, die so geladen werden kann:
find_package(Qt6 REQUIRED COMPONENTS Qml)
Dieses Kommando wurde in Qt 6.3 eingeführt.
Synopse
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()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Beschreibung
Dieser Befehl wird verwendet, um Informationen über ein QML-Modul target
zu erhalten. Dieses target
muss zuvor durch einen früheren Aufruf von qt_add_qml_module() erstellt oder an diesen übergeben worden sein. Das target
kann kein importiertes Ziel sein.
Die von diesem Befehl bereitgestellten Informationen ermöglichen es dem Aufrufer, alle Teile eines einzelnen QML-Moduls einzusetzen. Das Projekt sollte das target
und das zugehörige Plugin-Target (falls das Modul eines hat und es vom Backing target
getrennt ist) mit dem Standardbefehl install(TARGETS) installieren. Alles andere kann mit install(FILES) installiert werden.
Argumente
Jedes der optionalen Argumente gibt den Namen einer Variablen an, in der die entsprechende Eigenschaft des QML-Moduls gespeichert werden soll.
URI
und VERSION
geben die Uri bzw. Version des Moduls an.
PLUGIN_TARGET
kann verwendet werden, um den Namen des Plugin-Ziels für das QML-Modul zu erhalten. Nicht alle QML-Module haben ein Plugin, so dass der für diese Option zurückgegebene Wert ein leerer String sein kann. Wenn das QML-Modul kein separates Backing-Target hat, ist target
das gleiche wie das Plugin-Target.
TARGET_PATH
ist URI
, wobei Punkte (.) durch Schrägstriche (/) ersetzt werden. Es stellt den Pfad unterhalb des Installationsverzeichnisses des QML-Moduls dar, in dem die Datei qmldir
dieses QML-Moduls (und möglicherweise andere) bereitgestellt werden soll. Das QML-Modul-Installationsverzeichnis dient als QML-Importpfad, in dem die QML-Engine nach QML-Modulen sucht. Das standardmäßige Installationsverzeichnis für QML-Module, das von qt_generate_deploy_qml_app_script() verwendet wird, ist qml
. Ein Projekt, das ein Deployment-Skript verwendet, kann QT_DEPLOY_QML_DIR verwenden, anstatt diesen Ort fest zu kodieren (siehe auch QT_DEPLOY_PREFIX).
MODULE_RESOURCE_PATH
liefert den Ressourcenpfad, unter dem die einkompilierten Dateien des QML-Moduls zu finden sind. Er wird aus dem RESOURCE_PREFIX
von qt_add_qml_module() gebildet und mit dem TARGET_PATH
des Moduls verkettet. Der abgefragte Wert sollte nicht für das Deployment verwendet werden, kann aber hilfreich sein, um Ressourcenpfade mit Dateisystempositionen abzugleichen, falls dies erforderlich ist.
QMLDIR
liefert den Pfad zur Datei qmldir
. Beim Deployment des QML-Moduls sollte diese Datei in den Zielpfad kopiert werden. In einem Deployment-Skript kann dieser Pfad mit ${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}
ermittelt werden.
TYPEINFO
gibt den Pfad zur Typeinfo-Datei des Moduls an, sofern eine solche vorhanden ist. Wenn das Modul keine Typeinfo-Datei hat, ist es eine leere Zeichenfolge. Die Typeinfo-Datei sollte im selben Pfad wie die Datei qmldir
bereitgestellt werden.
QML_FILES
liefert eine Liste aller Dateien, die dem QML-Modul durch 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 aufgezeichnet.
QML_FILES_DEPLOY_PATHS
liefert eine Liste mit genau der gleichen Anzahl von Elementen wie QML_FILES
. Jedes Element der Liste QML_FILES_DEPLOY_PATHS
ist der Pfad unterhalb des Zielpfades, in 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 Ressourcen-Aliasen (siehe QT_RESOURCE_ALIAS) von dem Dateinamen in QML_FILES
abweichen kann.
Die Einträge in QML_FILES_DEPLOY_PATHS
können auch ein leerer String sein. Jede Datei, die mit qt_target_qml_sources() mit einem benutzerdefinierten PREFIX
hinzugefügt wird, hat keinen Bereitstellungspfad, da die Verwendung eines benutzerdefinierten Präfixes normalerweise bedeutet, dass die Datei außerhalb des Zielpfades des QML-Moduls liegt.
QML_FILES_PREFIX_OVERRIDES
liefert eine weitere Liste mit genau der gleichen Anzahl von Elementen wie QML_FILES
. Wenn eine Datei mit einem benutzerdefinierten Präfix, wie im vorangegangenen Absatz beschrieben, hinzugefügt wurde, enthält der entsprechende Eintrag in der Liste QML_FILES_PREFIX_OVERRIDES
das verwendete benutzerdefinierte Präfix. Bei allen anderen Dateien besteht der Listeneintrag aus einer leeren Zeichenkette.
Hinweis: Wenn nur eine Datei in der Liste QML_FILES
enthalten ist, kann QML_FILES_DEPLOY_PATHS
oder QML_FILES_PREFIX_OVERRIDES
eine leere Zeichenkette sein, je nachdem, ob diese Datei ein eigenes Präfix hat. Das liegt daran, dass CMake Listen und Zeichenketten so darstellt, dass es unmöglich ist, zwischen einer leeren Zeichenkette und einer Liste mit einem einzelnen leeren Element zu unterscheiden.
Die Optionen RESOURCES
, RESOURCES_DEPLOY_PATHS
und RESOURCES_PREFIX_OVERRIDES
sind analog zu denen für QML_FILES
. RESOURCES
liefert eine Liste aller Dateien, die dem QML-Modul als RESOURCES
Argumente für qt_add_qml_module() oder qt_target_qml_sources() hinzugefügt wurden. Alle Pfade sind absolut. Die Bedeutung und Verwendung von RESOURCES_DEPLOY_PATHS
und RESOURCES_PREFIX_OVERRIDES
folgt den gleichen 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()
© 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.