En esta página

Qt para macOS

Qt para macOS permite crear aplicaciones para la línea de ordenadores Mac de Apple.

Para desarrollar con Qt para macOS, sigue la guía de inicio; luego explora los ejemplos de Qt, y temas relacionados.

Configuraciones soportadas

Las siguientes versiones del entorno de compilación y la plataforma de destino de tiempo de ejecución son compatibles con Qt 6.11.

Entorno de compilaciónPlataforma de destinoArquitectura
Xcode 15 (SDK de macOS 14) o superiormacOS 13 o superior (incluido macOS 26)x86_64 x86_64h, arm64

Nota: La promesa de compatibilidad de Apple para macOS garantiza que las aplicaciones Qt sigan funcionando correctamente en las nuevas versiones del sistema operativo. Los problemas que puedan surgir se priorizan y programan de acuerdo con las políticas de bifurcación y soporte de Qt. La compatibilidad con nuevas características del sistema operativo no suele incluirse en las versiones de parches.

Entorno de compilación

El entorno de compilación para macOS lo proporciona la aplicación Xcode de Apple, que incluye tanto la cadena de herramientas (compilador, enlazador y otras herramientas) como el SDK de la plataforma macOS (cabeceras y bibliotecas) con el que se compila y enlaza. Juntos definen cómo se construye tu aplicación.

Apple suele recomendar (y, en el caso de la App Store, exigir) que las aplicaciones se construyan con el último SDK disponible, por lo que siempre se debe utilizar la última versión disponible de Xcode de Apple. Esto puede requerir la actualización de la versión de macOS de su sistema, ya que las nuevas versiones de Xcode pueden no funcionar en versiones antiguas de macOS.

Nota: El entorno de compilación de macOS siempre se define por completo por la versión de Xcode (su cadena de herramientas y SDK) que esté utilizando, no por la versión de macOS en la que esté ejecutando Xcode.

Exclusión de los cambios de comportamiento

Una advertencia sobre el uso de la última versión de Xcode y SDK para construir su aplicación es que los marcos del sistema macOS a veces deciden si habilitar o no los cambios de comportamiento en función del SDK con el que construyó su aplicación.

Esta técnica permite a Apple garantizar que los binarios creados con SDK antiguos sigan ejecutándose sin regresiones en las nuevas versiones de macOS.

Por ejemplo, cuando se introdujo el modo oscuro en macOS 10.14 Mojave, macOS solo trataría las aplicaciones creadas con el SDK 10.14 como compatibles con el modo oscuro, y dejaría las aplicaciones creadas con SDK anteriores con el aspecto predeterminado del modo claro.

Construir con una versión anterior de Xcode, contra un SDK anterior, es una manera de optar por tales cambios de comportamiento, pero es una solución de último recurso, y sólo debe aplicarse si su aplicación no tiene otras maneras de resolver el problema.

Plataformas de destino

La compilación para macOS utiliza una técnica denominada vinculación débil que le permite compilar su aplicación con las cabeceras y bibliotecas del SDK de la plataforma más reciente, al tiempo que permite que su aplicación se implemente en versiones de macOS inferiores a la versión del SDK. Cuando el binario se ejecuta en una versión de macOS inferior a la del SDK con el que se construyó, Qt comprobará en tiempo de ejecución si una característica de la plataforma está disponible o no antes de utilizarla.

En teoría esto permitiría ejecutar tu aplicación en cada una de las versiones de macOS lanzadas, pero por razones prácticas (y técnicas) hay un límite inferior a este rango, conocido como el objetivo de despliegue de tu aplicación. Si el binario se lanza en una versión de macOS por debajo del objetivo de despliegue Qt dará un mensaje de error y la aplicación no se ejecutará.

Qt expresa el objetivo de despliegue mediante las variables CMAKE_OSX_DEPLOYMENT_TARGET o QMAKE_MACOSX_DEPLOYMENT_TARGET, que por defecto se establece en el objetivo de despliegue mínimo soportado por Qt.

Sólo necesitas aumentar el objetivo de despliegue si tu propio código utiliza APIs que fueron añadidas en una versión de macOS superior a la que Qt tiene por defecto, y no estás utilizando comprobaciones de @available para proteger su uso en tiempo de ejecución.

Para aumentar el objetivo de despliegue con CMake:

set(CMAKE_OSX_DEPLOYMENT_TARGET "42.0")

o con qmake:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 42.0

Nota: No se debe bajar el objetivo de despliegue más allá del valor por defecto establecido por Qt. Si lo hace, es probable que se produzcan bloqueos en tiempo de ejecución si el binario se despliega en una versión de macOS inferior a la que Qt espera ejecutar.

Para obtener más información sobre el desarrollo basado en SDK en plataformas Apple, consulte la documentación para desarrolladores de Apple.

Arquitecturas

Por defecto, Qt se construirá para la arquitectura de su máquina de desarrollo - x86_64 si está en un Mac Intel, o arm64 si está en un Mac Apple Silicon.

Para compilar para otras arquitecturas puedes usar las variables CMAKE_OSX_ARCHITECTURES y QMAKE_APPLE_DEVICE_ARCHS en los archivos del proyecto o en la línea de comandos. Esto te permite tanto compilar cruzadamente para una arquitectura diferente, como construir binarios universales (multi-arquitectura). Por ejemplo, para compilar tu aplicación para x86_64 y arm64 con CMake:

cmake ~/src/myapp -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"

o con qmake:

qmake ~/src/myapp QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"

Al especificar las arquitecturas en un archivo de proyecto no deben entrecomillarse, por ejemplo:

TEMPLATE = app
SOURCES = main.cpp
QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64

Soporte de subarquitecturas en Macs Intel

Además de la arquitectura básica x86_64, Qt también es compatible con la subarquitectura x86_64h ("Haswell"), que mejora el rendimiento en los Mac Intel.

Primeros pasos

Instalación de Xcode

Xcode es un requisito para desarrollar con Qt para macOS. Puede instalarse desde la App Store o descargarse desde el sitio web para desarrolladores de Apple.

Una vez instalado, ejecute Xcode una vez para que instale las dependencias necesarias.

A continuación, verifique que el sistema está utilizando la instalación correcta de Xcode utilizando la herramienta xcode-select.

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

Si la salida no coincide con las expectativas, elija la instalación de Xcode explícitamente.

$ sudo xcode-select --switch /Applications/Xcode.app

Instalar o compilar Qt

Para instalar o compilar Qt, siga la guía general de introducción a Qt.

También puedes seguir Formas alternativas de instalar Qt para macOS para obtener información sobre cómo instalar Qt desde Homebrew.

Generación de archivos de proyecto Xcode

Por defecto, CMake y qmake generan archivos de proyecto en formato Makefile. Si prefiere construir y depurar su aplicación desde Xcode, puede solicitar que se genere un proyecto Xcode en su lugar:

cmake ~/src/myapp -GXcode

o con qmake:

qmake ~/src/myapp -spec macx-xcode

Despliegue de aplicaciones en macOS

Las aplicaciones de macOS se despliegan normalmente como paquetes de aplicaciones autónomas. El paquete de aplicaciones contiene el ejecutable de la aplicación, así como dependencias como las bibliotecas Qt, plugins, traducciones y otros recursos que pueda necesitar. Las bibliotecas de terceros, como Qt, normalmente no se instalan en todo el sistema; cada aplicación proporciona su propia copia.

Para compilar tu aplicación como un paquete de aplicaciones con CMake, establece la propiedad MACOSX_BUNDLE en tu ejecutable, como se indica a continuación:

qt_add_executable(MyApp)
if(APPLE)
    set_target_properties(MyApp PROPERTIES MACOSX_BUNDLE TRUE)
endif()

Con qmake, los paquetes son el valor predeterminado. Establezca CONFIG -= app_bundle en su archivo de proyecto (.pro) para desactivarlo.

Una forma común de distribuir aplicaciones es proporcionar una imagen de disco comprimida (archivo .dmg) que el usuario puede montar en Finder. La herramienta de despliegue, macdeployqt (disponible en los instaladores de macOS), se puede utilizar para crear los paquetes autocontenidos, y opcionalmente también crear un archivo .dmg.

Las aplicaciones también pueden distribuirse a través de la Mac App Store. macdeployqt (bin/macdeployqt) puede utilizarse como punto de partida para el despliegue en la tienda de aplicaciones. Para asegurar que Qt cumple con las reglas de la app store sandbox, Qt debe ser configurado con el argumento -feature-appstore-compliant.

Para más detalles sobre el despliegue en macOS, ver Qt para macOS - Despliegue.

Nota: Para vender aplicaciones en la App Store de macOS, se aplican reglas especiales. Para pasar la validación, la aplicación debe verificar la existencia de un recibo válido antes de ejecutar cualquier código. Dado que se trata de un mecanismo de protección contra copias, deben tomarse medidas para evitar patrones comunes y ofuscar el código que valida el recibo tanto como sea posible. Por lo tanto, esto no puede ser automatizado por Qt, sino que requiere algún código específico de la plataforma escrito específicamente para la propia aplicación. Se puede encontrar más información en la documentación de Apple.

Los siguientes temas proporcionan más detalles sobre Qt para macOS:

Uso de código Objective-C en aplicaciones Qt

Clang, el compilador utilizado para aplicaciones en plataformas Apple, permite mezclar código C++ y Objective-C. Para habilitar este modo, utilice la extensión .mm para los archivos fuente correspondientes y añádalos a su proyecto como de costumbre.

Con CMake:

target_sources(myapp PRIVATE objc_code.mm)

Con qmake:

SOURCES += objc_code.mm

Puede utilizar marcos Objective-C de la biblioteca de desarrolladores de Apple en sus aplicaciones Qt.

Para exponer la funcionalidad al resto de su aplicación, sin tener que cambiar el nombre de todos sus archivos de origen, declarar funciones de ayuda en un encabezado, e implementar la funcionalidad en un archivo de código fuente Objective-C ++:

// objc_code.h
QString localizedHostName();

// objc_code.mm
#include <Foundation/NSHost.h>
QString localizedHostName()
{
    return QString::fromNSString(NSHost.currentHost.localizedName);
}

© 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.