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 (存在する場合)を除き、標準の CMakeadd_executable() コマンドに渡されます。Android では、MODULE ライブラリが作成され、WIN32 またはMACOSX_BUNDLE オプションは無視されます。いくつかのターゲット・プロパティもAndroid用に設定されます:

  • SUFFIX ターゲット・プロパティは、ライブラリ・ファイル名にアーキテクチャ固有の接尾辞を付けるために設定されます。
  • <lang>_VISIBILITY_PRESET のターゲット・プロパティはdefault に設定され、結果のバイナリでmain() 関数が表示されるようにします。

Qt::Core のリンク

すべてのQtアプリケーションは、Qt::Core ライブラリにリンクする必要があります。

最終処理

ターゲットが作成された後、さらなる処理や最終化のステップが一般的に必要になります。実行するステップはプラットフォームとターゲットの様々なプロパティに依存します。

qt_finalize_target()qt_finalize_project() です。

ターゲットのファイナライズは、qt_add_executable を呼び出す際に同時に実行されるか、このコマンドが返された後まで延期されます(ただし、同じディレクトリスコープ内にある必要があります)。

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

CMake のバージョンに関係なく、MANUAL_FINALIZATION キーワードを指定することで、後で自分で明示的にqt_finalize_target() を呼び出すことを示すことができます。一般的に、MANUAL_FINALIZATION は、プロジェクトが CMake 3.18 以前をサポートする必要がない限り、必要ありません。

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

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

qt_add_executable(simpleapp main.cpp)

次の例は、最終化を延期しなければならないシナリオを示しています。OUTPUT_NAME targetプロパティはAndroid上のデプロイメント設定に影響を与えますが、これらの設定はターゲットのファイナライズの一部として書き出されます。3.19より前のCMakeバージョンの使用をサポートするために、MANUAL_FINALIZATION キーワードを追加することで、ターゲットの最終化の責任を引き継ぎます。

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

警告 あなたのAndroidプロジェクトが3.19より低いCMakeバージョンを使用してビルドされている場合は、トップレベルのCMakeLists.txtの最後にqt6_finalize_project()を呼び出していることを確認してください。

qt_finalize_target(),qt_set_finalizer_mode(),qt_add_library(),qt_finalize_project()も参照してください

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