このページでは

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()の呼び出しで渡されている必要があります。target は、インポートされたターゲットであってはなりません。

このコマンドによって提供される情報により、呼び出し元は単一の QML モジュールのすべての部分をデプロイできるようになります。プロジェクトでは、標準のinstall(TARGETS)コマンドを使用して、target および関連するプラグインターゲット(モジュールにそれがあり、かつバックエンドのtarget とは別のものである場合)をインストールする必要があります。それ以外のものはすべて、install(FILES) を使用してデプロイできます。

引数

各オプション引数は、対応する QML モジュールプロパティを格納する変数の名前を指定します。

URI およびVERSION は、それぞれモジュールの URI およびバージョンを提供します。

PLUGIN_TARGET を使用すると、QMLモジュールのプラグインタゲット名を取得できます。すべてのQMLモジュールにプラグインがあるわけではないため、このオプションで返される値は空の文字列になる場合があります。QMLモジュールに独立したバッキングターゲットがない場合、target はプラグインタゲットと同じになります。

TARGET_PATH は、URI からドット (.) をスラッシュ (/) に置き換えたものです。これは、この QML モジュールのqmldir ファイル(および場合によってはその他のファイル)がデプロイされるべき、QML モジュールのベースインストールディレクトリ以下のパスを表します。QML モジュールのインストールディレクトリは、QML エンジンが QML モジュールを検索する QML インポートパスとして機能します。qt_generate_deploy_qml_app_script()で使用されるデフォルトの QML モジュールインストールディレクトリは、qml です。デプロイスクリプトを使用するプロジェクトでは、この場所をハードコーディングする代わりにQT_DEPLOY_QML_DIRを使用できます(QT_DEPLOY_PREFIX も参照してください)。

MODULE_RESOURCE_PATH QMLモジュールのコンパイル済みファイルが格納されているリソースパスを提供します。これは、qt_add_qml_module()のRESOURCE_PREFIX と、モジュールのTARGET_PATH を連結して形成されます。この取得された値はデプロイには使用すべきではありませんが、必要に応じてリソースパスとファイルシステムの場所を照合する際に役立つ場合があります。

QMLDIR qmldir ファイルへのパスを提供します。QMLモジュールをデプロイする際、このファイルはターゲットパスにコピーする必要があります。デプロイスクリプト内では、 を使用してこの場所を取得できます。${QT_DEPLOY_PREFIX}/${QT_DEPLOY_QML_DIR}

TYPEINFO モジュールにtypeinfoファイルが存在する場合、そのパスを提供します。モジュールにtypeinfoファイルがない場合は、空の文字列になります。typeinfoファイルは、qmldir ファイルと同じパスにデプロイする必要があります。

QML_FILES 以下のいずれかの方法で QML モジュールに追加されたすべてのファイルのリストを提供します:

すべてのファイルは絶対パスで記録されます。

QML_FILES_DEPLOY_PATHS QML_FILES とまったく同じ要素数のリストを提供します。 リストの各要素は、 の対応する要素がデプロイされるべきターゲットパス以下のパスです。 のパスにはファイル名が含まれます。これは、リソースエイリアスの使用により(QML_FILES_DEPLOY_PATHS QML_FILES QML_FILES_DEPLOY_PATHS QT_RESOURCE_ALIAS を参照)、 内のファイル名と異なる可能性があるためです。QML_FILES

QML_FILES_DEPLOY_PATHS 内のエントリは、空の文字列である場合もあります。カスタムPREFIX を使用してqt_target_qml_sources()で追加されたファイルには、デプロイパスがありません。これは、カスタムプレフィックスを使用する場合、通常そのファイルが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()

© 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.