qt_add_qml_plugin

概要

qt_add_qml_plugin(
    target
    [BACKING_TARGET backing_target]
    [STATIC | SHARED]
    [OUTPUT_DIRECTORY]
    [URI]
    [CLASS_NAME]
    [NO_GENERATE_PLUGIN_SOURCE]
    [NAMESPACE namespace]
)

バージョンレスコマンドが無効になっている場合は、代わりにqt6_add_qml_plugin() を使ってください。このコマンドと同じ引数をサポートしています。

説明

このコマンドはQMLモジュールに関連するプラグインターゲットを作成します。通常はqt_add_qml_module()によって内部的に呼び出され、バッキングターゲットに関連付けられたプラグインを作成または更新します。特別な状況で特別な方法でターゲットを作成する必要がない限り、この関数を直接呼び出すべきではありません。

qt_add_qml_module() のドキュメントでは、QMLモジュールに関連するCMakeターゲットをどのように配置するかについて、様々な構造パターンを説明しています。QMLモジュールが独立したバッキングターゲットを持たず、全ての機能がプラグインに直接実装されている場合でも(推奨される配置ではありません)、qt_add_qml_plugin() ではなくqt_add_qml_module() を呼び出す必要があることに注意してください。

引数

target は QML プラグインに使用するターゲットの名前を指定します。存在しない場合は作成されます。

BACKING_TARGET はプラグインが関連づけられるバッキングターゲットの名前を指定します。バッキングターゲットはプラグインと同じ にすることもできますが、その場合はマージされるターゲットはひとつだけとなります。 を指定しない場合は、 オプションを指定する必要があります。BACKING_TARGET target BACKING_TARGET URI

デフォルトでは、プラグインはバッキングターゲットと互換性のある型で作成されます。バッキング・ターゲットがスタティック・ライブラリの場合、プラグインもスタティック・ライブラリとして作成されます。バッキングターゲットが共有ライブラリの場合、プラグインはモジュールライブラリとして作成されます。バッキングターゲットが提供されない場合、またはプラグインに個別のバッキングターゲットがない場合、プラグインタイプはSTATIC またはSHARED キーワードで指定できます。プラグイン・タイプが前述の条件のいずれによっても決定されない場合、Qtがスタティック・ライブラリとしてビルドされた場合はスタティック・プラグインが作成され、そうでない場合はモジュール・ライブラリのプラグインが作成されます。

OUTPUT_DIRECTORY は、プラグイン・ライブラリが作成されるディレクトリを指定します。常にQMLモジュールのqmldirファイルと同じ場所でなければなりません。 が指定されない場合は、 に保存されている情報から取得されます。これはバッキングターゲット自身のライブラリのディレクトリとは異なる可能性があることに注意してください。バッキングターゲットから出力ディレクトリを取得できない場合、デフォルトで が使用される。OUTPUT_DIRECTORY BACKING_TARGET CMAKE_CURRENT_BINARY_DIR

URI は、このプラグインが関連するQMLモジュールのモジュール識別子を宣言します。モジュール識別子はQMLモジュールの(ドットURI記法による)識別子です。 が与えられない場合は、 を指定し、バッキングターゲットにその URI が記録されている必要があります (通常、先にURI BACKING_TARGET qt_add_qml_module() を呼び出しています)。

各プラグインには、モジュールをQMLエンジンに登録するC++クラスが必要です。デフォルトでは、qt_add_qml_plugin() がこの C++ クラスのソースを自動生成し、target のソースリストに追加します。生成されたプラグインクラスは、プラグインがオプショナルであるという条件を満たします(モジュール定義qmldirファイルを参照)。クラス名は以下のように決定されます:

  • CLASS_NAME 。クラス名はQMLモジュールのqmldir
  • CLASS_NAME が指定されておらず、BACKING_TARGET が指定されている場合、C++ のクラス名はそのバッキングターゲットに記録されている詳細から取られます。これらの詳細は通常、qt_add_qml_module()の呼び出しによって記録され、生成されるqmldir ファイルで使用される名前と一致します。これはほとんどのシナリオで推奨されるクラス名の提供方法です。
  • それでもクラス名を決定できない場合は、ドットをアンダースコアに置き換え、Plugin を付加したモジュールの URI が設定されます。

NAMESPACE キーワードで名前空間が指定された場合、プラグインコードはこの名前の C++ 名前空間に生成されます。

プラグインによっては、プラグイン・クラスを手動で記述する必要があります。たとえば、プラグインは追加の初期化を実行したり、デフォルトのプラグイン・クラスでは実装されていないものを登録したりする必要があるかもしれません。そのような場合は、NO_GENERATE_PLUGIN_SOURCE オプションを指定します。その場合、自分でC++プラグイン・クラスを書き、それをtarget に追加することになります。自分でプラグイン・クラスを書く必要がある場合、そのプラグインをオプショナルにできる可能性は非常に低いことに注意してください。qmldir このことは、QML モジュールを定義する際、qt_add_qml_module() の呼び出しにNO_PLUGIN_OPTIONAL キーワードを含める必要があることを意味します。プラグインクラスが上記のロジックと同じクラス名を使用していることを確認してください。

© 2025 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.