qt_add_plugin
Qtプラグインターゲットを作成します。
このコマンドは、Qt6 パッケージのCore コンポーネントで定義されており、次のように読み込むことができます:
find_package(Qt6 REQUIRED COMPONENTS Core)このコマンドは Qt 6.0 で導入されました。
概要
qt_add_plugin(target
[SHARED | STATIC]
[CLASS_NAME class_name]
[OUTPUT_TARGETS variable_name]
[MANUAL_FINALIZATION]
sources...
)MANUAL_FINALIZATION オプションおよびソースの設定機能は、Qt 6.5 で導入されました。
バージョン指定なしのコマンドが無効になっている場合は、代わりにqt6_add_plugin() を使用してください。このコマンドと同じ引数セットをサポートしています。
説明
Qt プラグインターゲットには、通常の CMake ライブラリターゲットに加えて、追加の要件があります。qt_add_plugin() コマンドは、これらの要件が満たされるようにするための必要な処理を追加します。Qt プラグインターゲットを定義する際は、組み込みの CMake コマンド `add_library() ` ではなく、このコマンドを呼び出す必要があります。
デフォルトでは、Qtが静的リンクでビルドされた場合はSTATIC ライブラリとして、それ以外の場合はMODULE ライブラリとしてプラグインが作成されます。STATIC またはSHARED オプションを明示的に指定することで、このデフォルト設定を上書きできます。
指定されたsources は、内部のadd_library() 呼び出しにそのまま渡されます。
注:非静的 プラグインは、ビルド時にリンクされるのではなく、実行時に動的に読み込まれることを想定しています。CMake は、動的に読み込まれるライブラリにはMODULE ライブラリタイプを、直接リンクされる可能性のあるライブラリにはSHARED ライブラリタイプを提供することで、これら 2 つのシナリオを区別しています。 この区別は、シンボルのエクスポート処理の仕組み上、一部のツールチェーン(特にVisual Studio)において重要です。MODULE ライブラリへのリンクができない場合があり、また、エクスポートされたシンボルを一切含まないSHARED ライブラリを生成すると、ビルド時のエラーが発生する可能性があります。したがって、qt_add_plugin() にSHARED オプションが渡された場合、SHARED ライブラリではなく、MODULE ライブラリが生成されます。
すべてのQtプラグインにはクラス名があります。デフォルトでは、これはtarget と同じになりますが、CLASS_NAME オプションを使用して上書きすることができます。 このクラス名は、プラグインのメタデータを宣言する C++ クラスの名前に対応しています。静的プラグインの場合、これはQ_IMPORT_PLUGIN に渡される名前でもあり、この関数はプラグインをアプリケーションにインポートし、実行時に利用可能になるようにします。
プラグインが静的にビルドされる場合、qt_add_plugin() は追加の内部ターゲットを定義することがあります。これらは、プラグインにリンクする実行ファイルや共有ライブラリに対して、プラグインの自動インポートを容易にします。プロジェクトがプラグインをインストールし、他のプロジェクトがリンクできるようにする予定がある場合は、これらの内部ターゲットもインストールする必要があります。 これらのターゲット名は、OUTPUT_TARGETS オプションを指定し、その後にターゲットリストを返す変数名を指定することで取得できます。
最終処理
ターゲットの作成後、さらなる処理や最終処理が必要になる場合があります。最終処理は、qt_finalize_target()コマンドによって実装されます。
詳細およびMANUAL_FINALIZATION オプションの意味については、qt_add_library の最終処理に関するドキュメントを参照してください。
qt_finalize_target()およびqt_add_executable()も参照してください 。
© 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.