qt_set_finalizer_mode

ターゲットのファイナライズをカスタマイズします。

このコマンドは Qt 6.2 で導入されました。

注意: このコマンドはテクノロジープレビューであり、将来のリリースで変更される可能性があります。

概要

qt_set_finalizer_mode(target
    ENABLE | DISABLE
    MODES modes...
)

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

説明

このコマンドは、特定のtarget のファイナライゼーションのいくつかの側面をカスタマイズするために使用される。このコマンドはtarget がファイナライズされる前に呼び出された場合のみ効果があります:

  • プロジェクトがtarget に対して明示的にqt_finalize_target() を呼び出している。 これは通常、target が定義されたときにqt_add_executable()MANUAL_FINALIZATION キーワードが渡されたことを意味します。
  • CMake3.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()も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。