qt_set_finalizer_mode
ターゲットのファイナライゼーションに関する設定をカスタマイズします。
このコマンドは、Qt6 パッケージのCore コンポーネントで定義されており、次のように読み込むことができます:
find_package(Qt6 REQUIRED COMPONENTS Core)このコマンドは Qt 6.2 で導入されました。
注:この コマンドはテクノロジープレビュー段階にあり、将来のリリースで変更される可能性があります。
概要
qt_set_finalizer_mode(target
ENABLE | DISABLE
MODES modes...
)バージョン指定なしのコマンドが無効になっている場合は、代わりに `qt6_set_finalizer_mode() ` を使用してください。このコマンドと同じ引数セットをサポートしています。
説明
このコマンドは、特定の `target` の最終処理の一部の側面をカスタマイズするために使用されます。このコマンドは、`target ` が最終処理される前に呼び出された場合にのみ効果があります。最終処理が行われるのは、以下のいずれかのシナリオです:
- プロジェクトが
targetに対して明示的にqt_finalize_target() を呼び出す場合。これは通常、targetが定義された際に、MANUAL_FINALIZATIONキーワードがqt_add_executable()に渡されたことを意味します。 - CMake 3.17 以前が使用されている場合。この場合、最終化は常にqt_add_executable() の呼び出しの一環として直ちに実行されます。
- CMake 3.18以降が使用されている場合、
targetが定義された際にMANUAL_FINALIZATIONキーワードがqt_add_executable()に渡されず、targetのディレクトリスコープの終了時に遅延ファイナライゼーションが完了しています。
qt_set_finalizer_mode() は、モードの一覧を有効または無効にするために使用されます。ここで、モードはファイナライゼーションの特定の側面に対応しています。現在サポートされているファイナライゼーションモードは以下の通りです:
| モード | デフォルト | ファイナライゼーションの動作 |
|---|---|---|
static_plugins | 有効 | Qtが静的にビルドされる場合、静的プラグイン用の初期化オブジェクトライブラリが生成されます。target が実行可能ファイルであり、このファイナライゼーションモードが有効になっている場合、target が必要とするプラグイン初期化オブジェクトライブラリはすべて、 に直接リンクされます。これにより、Qtが提供する静的ライブラリ間の循環参照が防止され、リンク時間の短縮につながる可能性があります。 このファイナライザモードが無効になっている場合、各プラグインの初期化オブジェクトライブラリは、関連する Qt ライブラリの使用要件を通じて伝播されるため、循環が生じる可能性があります。Qt が静的にビルドされていない場合、このファイナライザモードは関係なく、使用されません。 |
例
以下の例は、CMake 3.19 以降を使用していることを前提としています(遅延ファイナライゼーションにはこれが必要です):
qt_add_executable(my_app main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)手動によるファイナライゼーションを使用する場合の同じ例は、次のようになります:
qt_add_executable(my_app MANUAL_FINALIZATION main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
qt_finalize_target(my_app)qt_finalize_target()も参照してください 。
© 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.