このページでは

qt_finalize_target

Qtターゲットに関連する、プラットフォーム固有の一般的なタスクを処理します。

このコマンドは、Qt6 パッケージのCore コンポーネントで定義されており、次のように読み込むことができます:

find_package(Qt6 REQUIRED COMPONENTS Core)

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

概要

qt_finalize_target(target)

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

説明

ターゲットの作成後、さらなる処理や最終処理が必要になる場合があります。実行すべき手順は、プラットフォーム、ターゲットの種類、およびターゲットのさまざまなプロパティによって異なります。これらの手順は、target が作成されたのと同じディレクトリスコープ内で実行されることが想定されているため、このコマンドもその同じディレクトリスコープから呼び出す必要があります。

このコマンドは通常、qt_add_executable()、qt_add_library()、またはqt_add_plugin()の呼び出しの一部として実行されます。これらの呼び出しが行われるタイミングや、プロジェクトで明示的にこのコマンドを呼び出す必要がある場合については、各コマンドのドキュメントで説明されています。

実行可能ターゲット

実行可能ターゲットの場合、qt_finalize_target() は、指定されたプラットフォームおよびターゲットに応じて、以下のサブセクションで説明するロジックを実装します。今後の Qt リリースでは、ファイナライゼーション処理がさらに拡張される可能性があります。

すべてのプラットフォーム

Qt プラグインの自動リンクを円滑に行うために、一部の内部処理が行われます。これは、静的リンクされた Qt を使用する場合や、CMake バージョン 3.21 より前のバージョンを使用する場合に特に重要です。

Android

  • target 用のデプロイ設定ファイルを生成します。
  • APKを生成するためのビルドターゲットを作成します。

WASM

CMAKE_CURRENT_BINARY_DIR ディレクトリ内に、${target}.html (ターゲット固有のwasm_shell.html ファイル)、qtloader.js 、およびqtlogo.svg ファイルを作成します。

iOS

Finalizationは、以下のターゲットプロパティがまだ設定されておらず、対応するCMAKE_... 変数も設定されていない場合、それらのプロパティに妥当な値を割り当てようとします:

  • XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
  • XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER
  • MACOSX_BUNDLE_GUI_IDENTIFIER

必要に応じて、変数 `QT_NO_SET_XCODE_DEVELOPMENT_TEAM_ID` を使用して `XCODE_ATTRIBUTE_DEVELOPMENT_TEAM` の設定を無効にしたり、変数 `QT_NO_SET_XCODE_BUNDLE_IDENTIFIER` を使用して `XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ` および `MACOSX_BUNDLE_GUI_IDENTIFIER` の設定を無効にしたりすることができます。

共有ライブラリの依存関係の組み込み

共有ライブラリに依存するアプリケーションは、リンク先の共有ライブラリがそのバンドルに含まれている場合にのみ起動できます。

Qt 6.12以降、ビルドシステムはアプリケーションがリンクする共有ライブラリを収集し、CODE_SIGN_ON_COPY を有効にした状態で、アプリケーションのXCODE_EMBED_FRAMEWORKS ビルドフェーズにそれらを追加します。フレームワークバンドルと通常のdylib ライブラリの両方が処理されます。

埋め込みが行われるのは、以下の条件がすべて満たされる場合に限られます:

  • Qtが共有ライブラリ構成でビルドされていること。
  • Xcodeジェネレータが使用されている。
  • Qtはデバッグ構成とリリース構成の両方でビルドされていないこと。これは、XCODE_EMBED_FRAMEWORKS がライブラリごとに単一のパスを保持するため、両方の構成を記述できないためである。
  • ターゲットがアプリケーションバンドルであり、アプリ拡張機能のような子バンドルではないこと。子バンドルは、親アプリケーションのフレームワークを使用することが想定されています。
  • ターゲットにはXCODE_EMBED_FRAMEWORKS プロパティがまだ設定されておらず、これはプロジェクトが埋め込み処理を独自に行っていることを示すものとみなされます。

共有ライブラリを自身でデプロイするには、アプリケーションターゲットでQT_NO_XCODE_EMBED_FRAMEWORKSプロパティを設定してください。

個々のライブラリを除外するには、それらのライブラリに対してQT_NO_XCODE_EMBED_FRAMEWORK_IN_CONSUMERSプロパティを設定します。

ライブラリターゲット

この Qt バージョンでは、ライブラリターゲットのファイナライゼーションは一切処理を行いません。将来の Qt バージョンでは、ライブラリに対するファイナライゼーション処理が追加される可能性があるため、ファイナライゼーションが想定どおりに呼び出されることを確認しておく必要があります。

qt_set_finalizer_mode()も参照してください 。

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