このページでは

qt_add_executable

プラットフォーム固有のタイプのアプリケーションターゲットを作成し、最終処理を行います。

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

find_package(Qt6 REQUIRED COMPONENTS Core)

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

概要

qt_add_executable(target
                  [WIN32] [MACOSX_BUNDLE]
                  [MANUAL_FINALIZATION]
                  sources...)

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

説明

このコマンドは、以下のタスクを実行します:

  • ターゲットプラットフォームに適したタイプの CMake ターゲットを作成します。
  • ターゲットをQt::Core ライブラリにリンクします。
  • CMakeターゲットのファイナライズを処理します。

ターゲットの作成

Androidを除くすべてのプラットフォームでは、実行可能ターゲットが作成されます。MANUAL_FINALIZATION (指定されている場合)を除き、すべての引数は標準のCMake `add_executable() `コマンドにそのまま渡されます。Androidでは、`MODULE `ライブラリが作成され、`WIN32 `や`MACOSX_BUNDLE `のオプションは無視されます。また、Android向けには以下のターゲットプロパティが設定されます:

  • SUFFIX ターゲットプロパティが設定され、ライブラリファイル名にアーキテクチャ固有のサフィックスが付与されます。
  • 生成されたバイナリでmain() 関数が可視となるよう、各種<lang>_VISIBILITY_PRESET ターゲットプロパティが `default ` に設定されます。

Qt Coreのリンク

すべての Qt アプリケーションはQt::Core ライブラリにリンクする必要があるため、利便性のため、この作業は自動的に行われます。

ファイナライゼーション

ターゲットの作成後、通常、さらなる処理や最終化の手順が必要となります。実行する手順は、プラットフォームやターゲットのさまざまなプロパティによって異なります。

ファイナライゼーション処理は、qt_finalize_target()およびqt_finalize_project() の 2 つのコマンドによって実装されます。

ターゲットのファイナライゼーションは、qt_add_executable の呼び出しの一部として実行されるか、またはこのコマンドが返った後のいずれかの時点に延期される場合があります(ただし、同じディレクトリスコープ内である必要があります)。

CMake 3.19 以降を使用する場合、ターゲットの最終処理は自動的に現在のディレクトリスコープの終了時まで延期されます。これにより、呼び出し元は、作成されたターゲットが最終処理される前にそのプロパティを変更する機会が得られます。CMake 3.19 より前のバージョンを使用する場合、自動延期はサポートされていません。 その場合、ターゲットの最終処理は、このコマンドが返る直前に実行されます。

CMakeのバージョンにかかわらず、MANUAL_FINALIZATION キーワードを指定することで、後で自身で明示的にqt_finalize_target()を呼び出すことを示すことができます。一般的に、プロジェクトがCMake 3.18以前をサポートする必要がある場合を除き、MANUAL_FINALIZATION は必要ありません。

CMake 3.19以降を使用する場合、プロジェクトのファイナライズは自動的に行われます。それより古いバージョンのCMakeを使用する場合は、ルートCMakeLists.txt ファイルの最後に、手動でqt_finalize_project()を呼び出す必要があります。これは、デプロイの目的でプロジェクトターゲット間の依存関係を収集する必要があるAndroidをターゲットとする場合に特に重要です。

例

以下の単純なケースでは、最終処理は自動的に行われます。CMake 3.19 より前のバージョンを使用している場合、最終処理は呼び出しの一部として即座に実行されます。CMake 3.19 以降を使用している場合、最終処理は現在のディレクトリスコープの終了時に実行されます。

qt_add_executable(simpleapp main.cpp)

以下の例は、ファイナライゼーションを遅延させる必要があるシナリオを示しています。OUTPUT_NAME ターゲットプロパティはAndroid上のデプロイ設定に影響しますが、それらの設定はターゲットのファイナライゼーションの一環として書き出されます。CMake 3.19より前のバージョンの使用に対応するため、MANUAL_FINALIZATION キーワードを追加することで、ターゲットのファイナライゼーションを自ら担当します。

qt_add_executable(complexapp MANUAL_FINALIZATION complex.cpp)
set_target_properties(complexapp PROPERTIES OUTPUT_NAME Complexify)
qt_finalize_target(complexapp)

警告: Androidプロジェクトを CMake バージョン 3.19 より前のバージョンでビルドする場合は 、最上位の CMakeLists.txt の最後にqt_finalize_project() を必ず呼び出すようにしてください。

関連項目: qt_finalize_target()、qt_set_finalizer_mode()、qt_add_library()、およびqt_finalize_project()。

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