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:

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.