CMake - qt add qml moduleコマンド
概要
このコマンドはQt 6.2で導入された。
QML型とQMLモジュールの登録
QMLで使用する型を登録するためには、CMakeのqt_add_qml_module
コマンドを使用して、QMLモジュールを定義する必要がある。
次に、新しいモジュールにC++ヘッダを追加して、その中でQMLに公開する型を定義する。
qt_add_qml_moduleコマンド
qt_add_qml_moduleコマンドは、C++ソース、.qmlファイル、またはその両方からなるQMLモジュールを定義する。
モジュールの詳細が提供され、それらが一貫していることを保証する。
また、.qmlソースのキャッシュコンパイル、リソースの埋め込み、リンティングチェック、いくつかの重要なモジュールファイルの自動生成等の設定や調整も行う。
バージョンレスコマンドが無効の場合は、代わりにqt6_add_qml_module
コマンドを使用する必要がある。
qt_add_qml_module(
<ターゲット名>
URI <任意のURI>
[VERSION <任意のバージョン>]
[PAST_MAJOR_VERSIONS ...]
[STATIC | SHARED]
[PLUGIN_TARGET <プラグインターゲット名>]
[OUTPUT_DIRECTORY <出力先ディレクトリ>]
[RESOURCE_PREFIX <リソースプリフィックス>]
[CLASS_NAME <クラス名>]
[TYPEINFO <型情報名>]
[IMPORTS ...]
[OPTIONAL_IMPORTS ...]
[DEFAULT_IMPORTS ...]
[DEPENDENCIES ...]
[IMPORT_PATH ...]
[SOURCES ...]
[QML_FILES ...]
[RESOURCES ...]
[OUTPUT_TARGETS out_targets_var]
[DESIGNER_SUPPORTED]
[FOLLOW_FOREIGN_VERSIONING]
[NAMESPACE namespace]
[NO_PLUGIN]
[NO_PLUGIN_OPTIONAL]
[NO_CREATE_PLUGIN_TARGET]
[NO_GENERATE_PLUGIN_SOURCE]
[NO_GENERATE_QMLTYPES]
[NO_GENERATE_QMLDIR]
[NO_LINT]
[NO_CACHEGEN]
[NO_RESOURCE_TARGET_PATH]
[NO_IMPORT_SCAN]
[ENABLE_TYPE_COMPILER]
[TYPE_COMPILER_NAMESPACE namespace]
[QMLTC_EXPORT_DIRECTIVE export_macro]
[QMLTC_EXPORT_FILE_NAME header_defining_export_macro]
)
QMLモジュールを定義した例については、Building a QML applicationやBuilding a reusable QML moduleを参照すること。
QMLモジュールに関する情報がQML言語サーバに公開されるようにプロジェクトを設定する方法については、QT_QML_GENERATE_QMLLS_INIを参照すること。
qt_add_qml_moduleコマンドの引数
TARGET (必須)
モジュールのターゲット名を指定する。
これはCMakeのターゲットを指定することにより、他のターゲットからリンクすることができる。
URI (必須)
モジュールのURIを指定する。
例: "MyCompany.MyModule"
QMLファイルは、このURIを使用してモジュールをインポートする。
VERSION
モジュールのバージョンを指定する。
例: "1.0"
バージョンを指定しない場合、プロジェクトのバージョンが使用される。
QML_FILES
モジュールに含めるQMLファイルのリストを指定する。
指定したファイル群は、自動的にリソースにコンパイルされる。
SOURCES
C++ソースファイルのリストを指定する。
指定したソースファイル群は、モジュールのコンパイルに使用される。
HEADERS
ヘッダファイルのリストを指定する。
これは、public APIとして扱われるヘッダファイル群を指定する。
RESOURCE_PREFIX
リソースのプレフィックスを指定する。
デフォルト値は、"/qt/qml/"である。
これは、QMLファイルがリソースシステムでアクセスされる時のパスを決定するものである。
OUTPUT_DIRECTORY
生成されたファイルの出力ディレクトリを指定する。
未指定の場合は、${CMAKE_CURRENT_BINARY_DIR}
が使用される。
IMPORT_PATH
インポートパスを追加する。
これは、QMLエンジンがモジュールを検索する場所である。
DEPENDENCIES
このモジュールが依存する他のQMLモジュールを指定する。
DESIGNER_SUPPORTED
Qt Creatorのデザイナにおいて、このモジュールをサポートするかどうかを指定する。
CLASSNAME
モジュールのC++クラス名を指定する。
未指定の場合は、自動生成される。
PLUGIN_TARGET
別のターゲットをプラグインとして使用する場合に指定する。
ENABLE_TYPE_COMPILER
QMLコンパイラを有効にするかどうかを指定する。
デフォルトは有効である。