Auf dieser Seite

qt_add_executable

Erstellt und finalisiert ein Anwendungsziel eines plattformspezifischen Typs.

Der Befehl ist in der Komponente „ Core “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Core)

Dieser Befehl wurde in Qt 6.0 eingeführt.

Übersicht

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

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_executable() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.

Beschreibung

Dieser Befehl führt folgende Aufgaben aus:

  • Erstellt ein CMake-Ziel des für die Zielplattform geeigneten Typs.
  • Das Ziel mit der Bibliothek „ Qt::Core “ verknüpfen.
  • Die Finalisierung des CMake-Ziels abwickeln.

Zielerstellung

Auf allen Plattformen außer Android wird ein ausführbares Ziel erstellt. Alle Argumente werden an den Standard-CMake-Befehl „ add_executable() “ weitergegeben, mit Ausnahme von „ MANUAL_FINALIZATION “ (falls vorhanden). Auf Android wird eine „ MODULE “-Bibliothek erstellt, und alle Optionen „ WIN32 “ oder „ MACOSX_BUNDLE “ werden ignoriert. Für Android werden außerdem einige Zieleigenschaften festgelegt:

  • Die Ziel-Eigenschaft „ SUFFIX “ wird so gesetzt, dass der Dateiname der Bibliothek ein architektur-spezifisches Suffix erhält.
  • Verschiedene Ziel-Eigenschaften von „ <lang>_VISIBILITY_PRESET “ werden auf „ default “ gesetzt, um sicherzustellen, dass die Funktion „ main() “ in der resultierenden Binärdatei sichtbar ist.

Einbinden von Qt Core

Da alle Qt-Anwendungen mit der Bibliothek „ Qt::Core “ verknüpft werden müssen, wird dies der Einfachheit halber automatisch für Sie erledigt.

Abschluss

Nachdem ein Ziel erstellt wurde, sind in der Regel weitere Verarbeitungs- oder Finalisierungsschritte erforderlich. Welche Schritte durchgeführt werden müssen, hängt von der Plattform und von verschiedenen Eigenschaften des Ziels ab.

Die Finalisierungsverarbeitung wird durch zwei Befehle implementiert: ` qt_finalize_target() ` und ` qt_finalize_project()`.

Die Zielfinalisierung kann entweder im Rahmen des Aufrufs von ` qt_add_executable ` erfolgen oder auf einen Zeitpunkt nach der Rückgabe dieses Befehls verschoben werden (sie sollte jedoch weiterhin im selben Verzeichnisbereich stattfinden).

Bei Verwendung von CMake 3.19 oder höher wird die Zielfinalisierung automatisch auf das Ende des aktuellen Verzeichnisbereichs verschoben. Dies gibt dem Aufrufer die Möglichkeit, Eigenschaften des erstellten Ziels zu ändern, bevor es finalisiert wird. Bei Verwendung von CMake-Versionen vor 3.19 wird die automatische Verschiebung nicht unterstützt. In diesem Fall wird die Zielfinalisierung unmittelbar vor der Rückgabe dieses Befehls durchgeführt.

Unabhängig von der CMake-Version kann das Schlüsselwort „ MANUAL_FINALIZATION “ angegeben werden, um anzugeben, dass Sie stattdessen zu einem späteren Zeitpunkt selbst explizit `qt_finalize_target()` aufrufen werden. Im Allgemeinen sollte ` MANUAL_FINALIZATION ` nicht erforderlich sein, es sei denn, das Projekt muss CMake 3.18 oder früher unterstützen.

Die Projektfinalisierung erfolgt bei Verwendung von CMake 3.19 oder höher automatisch. Bei Verwendung einer älteren CMake-Version sollten Sie `qt_finalize_project()` manuell am Ende der Stammdatei ` CMakeLists.txt ` aufrufen. Dies ist insbesondere bei der Zielplattform Android wichtig, um Abhängigkeiten zwischen Projektzielen für die Bereitstellung zu erfassen.

Beispiele

Im folgenden einfachen Fall erfolgt die Finalisierung automatisch. Bei Verwendung einer CMake-Version vor 3.19 wird die Finalisierung sofort als Teil des Aufrufs durchgeführt. Bei Verwendung von CMake 3.19 oder höher erfolgt die Finalisierung am Ende des aktuellen Verzeichnisbereichs.

qt_add_executable(simpleapp main.cpp)

Das folgende Beispiel zeigt ein Szenario, in dem die Finalisierung verzögert werden muss. Die Ziel-Eigenschaft „ OUTPUT_NAME “ wirkt sich auf die Bereitstellungs-Einstellungen unter Android aus, doch diese Einstellungen werden im Rahmen der Finalisierung des Ziels geschrieben. Um die Verwendung von CMake-Versionen vor 3.19 zu unterstützen, übernehmen wir die Verantwortung für die Finalisierung des Ziels, indem wir das Schlüsselwort „ MANUAL_FINALIZATION “ hinzufügen.

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

Warnung: Wenn Ihr Android-Projekt mit einer CMake-Version unter 3.19 erstellt wird, stellen Sie sicher, dass Sie `qt_finalize_project()` am Ende einer CMakeLists.txt auf oberster Ebene aufrufen.

Siehe auch qt_finalize_target(), qt_set_finalizer_mode(), qt_add_library() und 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.