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 モジュールインストールディレクトリは です。デプロイスクリプトを使用するプロジェクトでは、この場所をハードコーディングする代わりにqmlQT_DEPLOY_QML_DIR を使用することができます (QT_DEPLOY_PREFIX も参照)。

MODULE_RESOURCE_PATH QT_DEPLOY_PREFIX は 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モジュールに追加された全ファイルのリストを提供します:

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

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_PATHSQML_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_PATHSRESOURCES_PREFIX_OVERRIDES の意味と使い方は、それぞれQML_FILES_DEPLOY_PATHSQML_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()

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。