Sur cette page

qt_add_executable

Crée et finalise une cible d'application de type spécifique à une plateforme.

La commande est définie dans le composant « Core » du paquet « Qt6 », qui peut être chargé comme suit :

find_package(Qt6 REQUIRED COMPONENTS Core)

Cette commande a été introduite dans Qt 6.0.

Synopsis

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

Si les commandes sans version sont désactivées, utilisez plutôt qt6_add_executable(). Elle prend en charge le même ensemble d'arguments que cette commande.

Description

Cette commande effectue les tâches suivantes :

  • Crée une cible CMake du type approprié pour la plate-forme cible.
  • Lie la cible à la bibliothèque Qt::Core.
  • Gère la finalisation de la cible CMake.

Création de la cible

Sur toutes les plateformes sauf Android, une cible exécutable sera créée. Tous les arguments seront transmis à la commande CMake standard « add_executable() », à l’exception de « MANUAL_FINALIZATION » (si présent). Sur Android, une bibliothèque « MODULE » sera créée et toutes les options « WIN32 » ou « MACOSX_BUNDLE » seront ignorées. Certaines propriétés de cible seront également définies pour Android :

  • La propriété de cible SUFFIX sera définie pour attribuer au nom du fichier de bibliothèque un suffixe spécifique à l’architecture.
  • Diverses propriétés de la cible « <lang>_VISIBILITY_PRESET » seront définies sur « default » afin de garantir que la fonction main() soit visible dans le binaire résultant.

Liaison de Qt Core

Comme toutes les applications Qt doivent être liées à la bibliothèque Qt::Core, cette opération est effectuée automatiquement pour vous, par souci de commodité.

Finalisation

Une fois une cible créée, des étapes de traitement ou de finalisation supplémentaires sont généralement nécessaires. Les étapes à effectuer dépendent de la plateforme et de diverses propriétés de la cible.

Le traitement de finalisation est mis en œuvre par deux commandes : qt_finalize_target() et qt_finalize_project().

La finalisation d’une cible peut avoir lieu soit lors de l’appel à ` qt_add_executable `, soit être reportée à un moment ultérieur après le retour de cette commande (mais elle doit toujours se situer dans la même portée de répertoire).

Avec CMake 3.19 ou une version ultérieure, la finalisation de la cible est automatiquement reportée à la fin de la portée du répertoire courant. Cela permet à l’appelant de modifier les propriétés de la cible créée avant qu’elle ne soit finalisée. Avec les versions de CMake antérieures à la 3.19, le report automatique n’est pas pris en charge. Dans ce cas, la finalisation de la cible est effectuée immédiatement avant que cette commande ne renvoie une valeur.

Quelle que soit la version de CMake, le mot-clé « MANUAL_FINALIZATION » peut être spécifié pour indiquer que vous appellerez explicitement vous-même la fonction qt_finalize_target() ultérieurement. En général, l’appel à « MANUAL_FINALIZATION » ne devrait pas être nécessaire, sauf si le projet doit prendre en charge CMake 3.18 ou une version antérieure.

La finalisation du projet se fait automatiquement avec CMake 3.19 ou une version ultérieure. Si vous utilisez une version plus ancienne de CMake, vous devez appeler qt_finalize_project() manuellement, à la fin du fichier d’ CMakeLists.txt de racine. Ceci est particulièrement important lorsque vous ciblez Android, afin de collecter les dépendances entre les cibles du projet à des fins de déploiement.

Exemples

Dans le cas simple suivant, la finalisation est gérée automatiquement. Si vous utilisez une version de CMake antérieure à la version 3.19, la finalisation sera effectuée immédiatement dans le cadre de l’appel. Lorsque vous utilisez CMake 3.19 ou une version ultérieure, la finalisation aura lieu à la fin de la portée du répertoire courant.

qt_add_executable(simpleapp main.cpp)

L’exemple suivant illustre un scénario dans lequel la finalisation doit être différée. La propriété de cible « OUTPUT_NAME » affecte les paramètres de déploiement sur Android, mais ces paramètres sont écrits dans le cadre de la finalisation de la cible. Afin de prendre en charge l’utilisation de versions de CMake antérieures à la version 3.19, nous prenons en charge la finalisation de la cible en ajoutant le mot-clé « MANUAL_FINALIZATION ».

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

Avertissement : si votre projet Android est compilé à l’aide d’une version de CMake antérieure à la version 3.19, veillez à appeler qt_finalize_project() à la fin du fichier CMakeLists.txt de niveau supérieur.

Voir également qt_finalize_target(), qt_set_finalizer_mode(), qt_add_library() et 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.