qt_extract_metatypes
Qtターゲットからメタタイプを抽出し、関連するmetatypes.jsonファイルを生成します。
このコマンドは、Qt6 パッケージのCore コンポーネントに定義されており、次のように読み込むことができます:
find_package(Qt6 REQUIRED COMPONENTS Core)このコマンドは Qt 6.0 で導入されました。
概要
qt_extract_metatypes(target
[MANUAL_MOC_JSON_FILES json_files...]
[OUTPUT_FILES variable_name]
)バージョン指定なしのコマンドが無効になっている場合は、代わりに `qt6_extract_metatypes() ` を使用してください。このコマンドと同じ引数をサポートしています。
説明
特定の操作では、ターゲットに対してメタタイプ情報が生成・収集されることが前提となります。通常、これはQtコマンドによって内部的に処理されますが、そうでないシナリオでは、qt_extract_metatypes() を呼び出すことで、特定のtarget に対してこの情報の収集を強制的に行うことができます。
ターゲットのソースファイルに対するメタタイプ情報は、以下のいずれかの方法で生成されます。
- AUTOMOC による自動生成。
qt_extract_metatypes()コマンドは、targetで AUTOMOC が有効になっていることを検出し、必要な情報を自動的に抽出します。 - `
moc` コマンドに `--output-json` オプションを指定して手動で実行します。この方法を使用して生成されたすべての JSON ファイルを追跡し、`MANUAL_MOC_JSON_FILES` オプションを指定して `qt_extract_metatypes()` に渡すのは、プロジェクト側の責任となります。
qt_extract_metatypes() AUTOMOCおよび手動のMOC入力からすべてのメタタイプの詳細を収集した、ターゲット固有のメタタイプJSONファイルを生成します。これは、--collect-json オプションを指定してmoc を呼び出すことで行われます。 生成されたメタタイプ JSON ファイルの保存場所を知る必要がある場合(たとえば、別のコマンドに渡す場合やインストールする場合など)、OUTPUT_FILES オプションを使用して、その絶対パスを格納する変数の名前を指定してください。
メタタイプの自動抽出
Qt 6.8以降では、AUTOMOC を無効にしておらず、かつCMake 3.19以降を使用しているか、またはqt_finalize_target()を手動で呼び出している場合、qt_extract_metatypes() はqt_add_library()の最終処理ステップの一環として自動的に呼び出されます。 ファイナライゼーションの前に、場合によってはカスタム引数を指定してqt_extract_metatypes() を手動で呼び出している場合は、この動作の影響を受けません。しかし、呼び出していない場合でも、メタタイプが確実に生成されるようになります。これは、将来的にライブラリ内の型がQML型の構成要素として使用される可能性がある場合に重要であり、デメリットはありません。
さらに、qt_add_qml_module()は、そのターゲットに対してqt_extract_metatypes() を自動的に呼び出します。
© 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.