qt_query_qml_module
QML モジュールに関する情報を取得します。
このコマンドはQt6
パッケージのQml
コンポーネントで定義されています:
find_package(Qt6 REQUIRED COMPONENTS Qml)
このコマンドは Qt 6.3 で導入されました。
概要
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] )
バージョンレスコマンドが無効になっている場合は、代わりにqt6_query_qml_module()
を使ってください。このコマンドと同じ引数をサポートしています。
説明
このコマンドは QML モジュールtarget
に関する情報を取得するために使用します。このtarget
は、以前にqt_add_qml_module() で作成されたか、あるいはqt_add_qml_module() に渡されたものでなければなりません。target
はインポートターゲットであってはいけません。
このコマンドで得られる情報によって、呼び出し側は一つのQMLモジュールのすべての部分をデプロイすることができます。プロジェクトは標準のinstall(TARGETS)コマンドを使って、target
と関連するプラグインターゲット(モジュールにプラグインターゲットがあり、それがバッキングターゲットtarget
から分離されている場合)をインストールする必要があります。それ以外はinstall(FILES)でインストールできます。
引数
各オプション引数は対応するQMLモジュールのプロパティを格納する変数名を指定します。
URI
と はそれぞれモジュールの uri と version を指定します。VERSION
PLUGIN_TARGET
はQMLモジュールのプラグインターゲットの名前を取得するために使われます。すべてのQMLモジュールがプラグインを持つわけではないので、このオプションで返される値は空文字列になる可能性があります。QMLモジュールに個別のバッキングターゲットがない場合、 はプラグインターゲットと同じになります。target
TARGET_PATH
は のドット(.)をスラッシュ(/)に置き換えたものです。ベースとなるQMLモジュールのインストールディレクトリの下に、このQMLモジュールの ファイル(場合によっては他のファイルも)を配置するパスを表します。QMLモジュールのインストールディレクトリは、QMLエンジンがQMLモジュールを探すためのQMLインポートパスとなります。URI
qmldir
qt_generate_deploy_qml_app_script()が使用するデフォルトのベース QML モジュールインストールディレクトリは です。デプロイスクリプトを使用するプロジェクトでは、この場所をハードコーディングする代わりにqml
QT_DEPLOY_QML_DIR を使用することができます (QT_DEPLOY_PREFIX も参照)。
MODULE_RESOURCE_PATH
QT_DEPLOY_QML_DIR は、QMLモジュールのコンパイル済みファイルがあるリソースパスを指定します。これはqt_add_qml_module() の にモジュールの を足したものです。クエリされた値はデプロイに使用すべきではありませんが、 必要であれば、リソースパスとファイルシステムの場所を一致させるのに役立つかもしれません。RESOURCE_PREFIX
TARGET_PATH
QMLDIR
には ファイルへのパスを指定します。QMLモジュールをデプロイする際には、このファイルをターゲットパスにコピーする必要があります。デプロイスクリプトでは、 を使ってこの場所を取得することができます。qmldir
${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}
TYPEINFO
モジュールのtypeinfoファイルがある場合はそのパスを指定します。モジュールにtypeinfoファイルがない場合は空文字列になります。typeinfoファイルは ファイルと同じパスに配置されるべきである。qmldir
QML_FILES
は以下のいずれかの方法でQMLモジュールに追加された全ファイルのリストを提供します:
- qt_add_qml_module() の
QML_FILES
引数として。 - qt_target_qml_sources() の
FILES
引数として。
すべてのファイルは絶対パスで記録されます。
QML_FILES_DEPLOY_PATHS
は、 と全く同じ要素数のリストを提供します。 リストの各要素は、 の対応する要素が配置されるべきターゲットパス以下のパスです。 のパスにはファイル名が含まれます。これは、リソースエイリアスを使用するため、 のファイル名と異なる可能性があるためです(QML_FILES
QML_FILES_DEPLOY_PATHS
QML_FILES
QML_FILES_DEPLOY_PATHS
QML_FILES
QT_RESOURCE_ARIAS を参照)。
QML_FILES_DEPLOY_PATHS
の項目は空文字列でもかまいません。qt_target_qml_sources()でカスタムプレフィックスPREFIX
を使って追加したファイルは、デプロイパスを持ちません。カスタムプレフィックスを使うということは、通常、そのファイルが QML モジュールのターゲットパスの外にあるということだからです。
QML_FILES_PREFIX_OVERRIDES
は、 とまったく同じ要素数を持つ別のリストを提供します。前の段落で説明したように、ファイルがカスタム接頭辞付きで追加された場合、 のリストにある対応する項目には、使用されたカスタム接頭辞が含まれます。それ以外のファイルについては、リストのエントリは空文字列になります。QML_FILES
QML_FILES_PREFIX_OVERRIDES
注意: 特殊なケースとして、QML_FILES
リストにファイルが 1 つしかない場合、そのファイルがカスタム接頭辞を持つかどうかによって、QML_FILES_DEPLOY_PATHS
やQML_FILES_PREFIX_OVERRIDES
が空文字列になることがあります。これは、CMakeのリストと文字列の表現方法では、空の文字列と空の要素が1つだけのリストを区別することができないためです。
RESOURCES
,RESOURCES_DEPLOY_PATHS
,RESOURCES_PREFIX_OVERRIDES
のオプションは、前述のQML_FILES
のオプションと類似しています。RESOURCES
は、qt_add_qml_module()またはqt_target_qml_sources() の RESOURCES
引数として QML モジュールに追加されたすべてのファイルのリストを提供します。パスはすべて絶対パスです。RESOURCES_DEPLOY_PATHS
とRESOURCES_PREFIX_OVERRIDES
の意味と使い方は、それぞれQML_FILES_DEPLOY_PATHS
とQML_FILES_PREFIX_OVERRIDES
と同じパターンです。
例
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.