このページについて

C

qul_add_qml_module

警告: この CMake コマンドは 2.4 以降で非推奨となっています。代わりにMCU.Moduleの使用をご検討ください。

概要

qul_add_qml_module(<target>
                   URI <uri>
                   [QML_FILES <file paths...>]
                   [HEADERS <file paths...>]
                   [SOURCES <file paths...>]
                   [IMPORTS <uris...>]
                   [OUTPUT_DIRECTORY <path>]
                   [GENERATE_QMLTYPES]
                   [INSTALL_HEADERS_LOCATION <path>]
                   [INSTALL_HEADERS_COMPONENT <name>]
                   [INSTALL_LIBRARY_LOCATION <path>]
                   [INSTALL_LIBRARY_COMPONENT <name>]
                   [INSTALL_LIBRARY_EXPORT <name>]
                   [QML_PROJECT <qmlproject_file>]
)

説明

指定された URI を持つ QML モジュールの静的ライブラリをビルドするための CMake ターゲットを作成します。

現在のビルドディレクトリのサブディレクトリに、QML モジュールディレクトリが生成されます(OUTPUT_DIRECTORY を参照)。

このターゲットは、それをリンクするアプリケーションターゲットが QML モジュールをインポートできるように設定されています。

オプションで、INSTALL_ 引数を使用してモジュールのインストールを設定することができます。

オプション

URI 引数は、ドットで区切られた QML モジュール URI であり、モジュールを使用するには QML 内でこれをインポートする必要があります。たとえば、URI「Ui.Buttons」は、「import Ui.Buttons 1.0」としてインポートされるモジュールに対応します。

QML_FILESHEADERS 、およびSOURCES 引数には、モジュールを構成するファイルが列挙されます。これらは、他のCMakeコマンドを便利に利用するためのラッパーです:

引数ファイルの種類同等のコマンド
QML_FILESQMLソースqul_target_qml_sources
HEADERSC++ヘッダー(エクスポートされた型を含む場合あり)qul_target_generate_interfaces
SOURCESC++ ソースファイルtarget_sources

IMPORTS 引数には、新しいモジュールの依存関係となる QML モジュールの URI のリストを指定できます。例: "IMPORTSQtQuick QtQuick .Templates"。

OUTPUT_DIRECTORY 引数により、QMLモジュールがビルドされるサブディレクトリを上書きできます。デフォルトはCMAKE_CURRENT_BINARY_DIR です。モジュールファイルは、インポートURIに基づいてサブディレクトリに配置されます。例えば、QtQuick.Timeline のサブディレクトリは、OUTPUT_DIRECTORY の下にあるQtQuick/Timeline となります。

QMLモジュールファイルは、URIのすべての「.」を「/」に置き換えて生成されるOUTPUT_DIRECTORY のサブディレクトリに配置されます。

GENERATE_QMLTYPES 引数が使用されると、そのモジュール用の「plugins.qmltypes」ファイルが生成され、生成された「qmldir」ファイルの隣に配置されます。

インストール

モジュールのユーザーには、OUTPUT_DIRECTORY 内の以下のファイルが必要です:

  • 生成された「qmldir」ファイル
  • .qml のソースファイル(QML_FILES に記載)
  • 生成された.h ファイル(QML_FILES 内のファイルから生成されたもの)
  • 生成された.fonts ファイル(QML_FILES 内のファイルから)
  • 生成された.qml ファイル(HEADERS 内のヘッダーから)

さらに、このモジュールのユーザーは、HEADERS にリストされているヘッダーファイルへのアクセス権が必要です。これらのファイルは、このコマンドによるインストールでは決してセットアップされません。

INSTALL_HEADERS_LOCATION 引数が指定された場合、OUTPUT_DIRECTORY 内の必要なファイルが指定されたパスにインストールされます。モジュールURIに対応するサブディレクトリがパスに自動的に追加される点に注意してください。

オプションのINSTALL_HEADERS_COMPONENT 引数は、CMake のinstall(DIRECTORY) コマンドで使用されるCOMPONENT を制御します。

INSTALL_LIBRARY_LOCATION 引数が指定されている場合、コンパイルされたライブラリは指定された場所にインストールされます。オプションのINSTALL_LIBRARY_COMPONENT およびINSTALL_LIBRARY_EXPORT 引数は、CMake のinstall(TARGETS) コマンドに渡されるCOMPONENT およびEXPORT 引数を指定します。

.qmlproject ファイルを使用してプロジェクトを構成する際に、QML_PROJECT が指定されている場合。

qul_add_qml_module(simple_qml_only_module
    URI MySimpleModule
    QML_FILES
        Foo.qml
        Bar.qml
)

# myapp has QML files that "import MySimpleModule" and use Foo and Bar
target_link_libraries(myapp PRIVATE simple_qml_only_module)


qul_add_qml_module(myqmlmodule
    URI MyOrg.Styles
    QML_FILES
        Foo.qml
    HEADERS
        include/backend.h
    SOURCES
        source/backend.cpp
    IMPORTS
        QtQuick.Templates
    OUTPUT_DIRECTORY
        # Means that files will be ${CMAKE_CURRENT_BINARY_DIR}/imports/MyOrg/Styles/...
        ${CMAKE_CURRENT_BINARY_DIR}/imports/
    GENERATE_QMLTYPES
    INSTALL_HEADERS_LOCATION "${CMAKE_INSTALL_INCLUDEDIR}/qmlmodules"
    INSTALL_HEADERS_COMPONENT ModuleHeaders
    INSTALL_LIBRARY_LOCATION ${CMAKE_INSTALL_LIBDIR}
    INSTALL_LIBRARY_COMPONENT ObjectLibraries
    INSTALL_LIBRARY_EXPORT SharedExportName
)

target_include_directories(myqmlmodule
    PUBLIC
        "include/"
)
target_link_libraries(myqmlmodule PUBLIC
    Qul::ControlsTemplates
)

# Need to ensure that backend.h is installed and in the include path separately.
install(
    DIRECTORY "include/"
    DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/imports/include/
)
target_include_directories(myqmlmodule
    INTERFACE
        $<INSTALL_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/imports/include/>
)

関連項目: QML でのシングルトンの定義

特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。