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_FILES 、HEADERS 、およびSOURCES 引数には、モジュールを構成するファイルが列挙されます。これらは、他のCMakeコマンドを便利に利用するためのラッパーです:
| 引数 | ファイルの種類 | 同等のコマンド |
|---|---|---|
QML_FILES | QMLソース | qul_target_qml_sources |
HEADERS | C++ヘッダー(エクスポートされた型を含む場合あり) | qul_target_generate_interfaces |
SOURCES | C++ ソースファイル | 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ライセンスの下で利用可能です。
詳細はこちらをご覧ください。