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プラグインターゲットを定義する際には、組み込みのCMakeadd_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()も参照してください 。
© 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.