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()も参照してください

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