En esta página

qt_add_executable

Crea y finaliza un objetivo de aplicación de un tipo específico de plataforma.

El comando se define en el componente Core del paquete Qt6, que puede cargarse de este modo:

find_package(Qt6 REQUIRED COMPONENTS Core)

Este comando se introdujo en Qt 6.0.

Sinopsis

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

Si los comandos versionless están deshabilitados, utilice qt6_add_executable() en su lugar. Admite el mismo conjunto de argumentos que este comando.

Descripción

Este comando realiza las siguientes tareas:

  • Crea un objetivo CMake del tipo adecuado para la plataforma de destino.
  • Enlaza el objetivo con la biblioteca Qt::Core.
  • Finalizar el objetivo CMake.

Creación del objetivo

En todas las plataformas excepto Android, se creará un objetivo ejecutable. Todos los argumentos se pasarán al comando estándar de CMake add_executable(), excepto MANUAL_FINALIZATION (si está presente). En Android, se creará una biblioteca MODULE y se ignorará cualquier opción WIN32 o MACOSX_BUNDLE. Algunas propiedades de destino también se establecerán para Android:

  • La propiedad de destino SUFFIX se establecerá para dar al nombre del archivo de biblioteca un sufijo específico de la arquitectura.
  • Varias propiedades de destino <lang>_VISIBILITY_PRESET se establecerán a default para asegurar que la función main() es visible en el binario resultante.

Enlazar Qt::Core

Dado que todas las aplicaciones Qt necesitan enlazarse a la librería Qt::Core, esto se hace por conveniencia.

Finalización

Después de crear un objetivo, normalmente se necesitan más pasos de procesamiento o finalización. Los pasos a realizar dependen de la plataforma y de varias propiedades del objetivo.

El proceso de finalización se implementa mediante dos comandos: qt_finalize_target() y qt_finalize_project().

La finalización del objetivo puede ocurrir ya sea como parte de la llamada a qt_add_executable o ser diferida a algún momento después de que este comando regrese (pero todavía debe estar en el mismo ámbito de directorio).

Cuando se utiliza CMake 3.19 o posterior, la finalización del objetivo se aplaza automáticamente hasta el final del ámbito del directorio actual. Esto da a la persona que llama la oportunidad de modificar las propiedades del objetivo creado antes de que se finalice. Cuando se utilizan versiones de CMake anteriores a la 3.19, el aplazamiento automático no es compatible. En ese caso, la finalización del objetivo se realiza inmediatamente antes de que este comando regrese.

Independientemente de la versión de CMake, se puede utilizar la palabra clave MANUAL_FINALIZATION para indicar que se llamará explícitamente a qt_finalize_target() en otro momento. En general, MANUAL_FINALIZATION no debería ser necesario a menos que el proyecto tenga que soportar CMake 3.18 o anterior.

La finalización del proyecto se produce automáticamente cuando se utiliza CMake 3.19 o posterior. Cuando se utiliza una versión anterior de CMake, debe llamar qt_finalize_project() manualmente, al final de la raíz CMakeLists.txt archivo. Esto es especialmente importante cuando se utiliza Android, para recopilar las dependencias entre los objetivos del proyecto con fines de despliegue.

Ejemplos

En el siguiente caso sencillo, la finalización se realiza automáticamente. Si se utiliza una versión de CMake anterior a la 3.19, la finalización se realizará inmediatamente como parte de la llamada. Si se utiliza CMake 3.19 o posterior, la finalización se producirá al final del ámbito del directorio actual.

qt_add_executable(simpleapp main.cpp)

El siguiente ejemplo muestra un escenario donde la finalización debe ser diferida. La propiedad de destino OUTPUT_NAME afecta a la configuración de despliegue en Android, pero esos ajustes se escriben como parte de la finalización del destino. Para soportar el uso de versiones de CMake anteriores a la 3.19, asumimos la responsabilidad de finalizar el objetivo añadiendo la palabra clave MANUAL_FINALIZATION.

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

Advertencia: Si tu proyecto Android está construido usando una versión de CMake inferior a la 3.19, asegúrate de llamar a qt6_finalize_project() al final de un CMakeLists.txt de nivel superior.

Ver también qt_finalize_target(), qt_set_finalizer_mode(), qt_add_library(), y 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.