Sur cette page

qt_add_executable

Crée et finalise une cible d'application d'un type spécifique à la plate-forme.

La commande est définie dans le composant Core du paquetage 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 qt6_add_executable() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.

Description de la commande

Cette commande effectue les tâches suivantes :

  • Créer une cible CMake du type approprié pour la plate-forme cible.
  • Lier la cible à la bibliothèque Qt::Core.
  • Gérer 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 (s'il est présent). Sur Android, une bibliothèque MODULE sera créée et les options WIN32 ou MACOSX_BUNDLE seront ignorées. Certaines propriétés cibles seront également définies pour Android :

  • La propriété cible SUFFIX sera définie pour donner au nom du fichier de la bibliothèque un suffixe spécifique à l'architecture.
  • Diverses propriétés de la cible <lang>_VISIBILITY_PRESET seront définies à default pour s'assurer que la fonction main() est visible dans le binaire résultant.

Lier Qt::Core

Puisque toutes les applications Qt doivent être liées à la bibliothèque Qt::Core, ceci est fait pour vous par commodité.

Finalisation

Après la création d'une cible, d'autres étapes de traitement ou de finalisation sont souvent nécessaires. Les étapes à effectuer dépendent de la plate-forme et de diverses propriétés de la cible.

Le traitement de finalisation est implémenté par deux commandes : qt_finalize_target() et qt_finalize_project().

La finalisation de la cible peut avoir lieu lors de l'appel à qt_add_executable ou être reportée à un moment donné après le retour de cette commande (mais elle doit toujours se trouver dans le même répertoire).

Lorsque l'on utilise 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. Lorsque vous utilisez des versions de CMake antérieures à la 3.19, le report automatique n'est pas supporté. Dans ce cas, la finalisation de la cible est effectuée immédiatement avant le retour de cette commande.

Indépendamment de la version de CMake, le mot-clé MANUAL_FINALIZATION peut être donné pour indiquer que vous appellerez explicitement qt_finalize_target() vous-même à la place à un moment ultérieur. En général, MANUAL_FINALIZATION ne devrait pas être nécessaire à moins que le projet ne doive supporter CMake 3.18 ou une version antérieure.

La finalisation du projet se fait automatiquement lorsque l'on utilise 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 racine CMakeLists.txt. Ceci est particulièrement important pour Android, afin de collecter les dépendances entre les cibles du projet à des fins de déploiement.

Exemples d'application

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

qt_add_executable(simpleapp main.cpp)

L'exemple suivant montre un scénario dans lequel la finalisation doit être différée. La propriété OUTPUT_NAME target 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 pouvoir utiliser des versions de CMake antérieures à la 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)

Attention : Si votre projet Android est construit en utilisant une version de CMake inférieure à 3.19, assurez-vous que vous appelez qt6_finalize_project() à la fin d'un CMakeLists.txt de haut niveau.

Voir aussi 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.