En esta página

Construir Qt Optimizado

Esta página describe el proceso de configurar y construir una versión más pequeña y adaptada de Qt, de acuerdo a sus necesidades específicas.

Paso 1: Obtener las Fuentes, e Instalar los Requisitos de Compilación y Configurar el Entorno

Para obtener los fuentes, instalar las dependencias y configurar el entorno, consulte las instrucciones específicas para cada plataforma:

Paso 2: Creación de las bibliotecas y herramientas Qt

Siga las instrucciones específicas de su plataforma y utilice las siguientes opciones de configuración de Qt para crear una compilación optimizada para sus necesidades.

La siguiente tabla describe con más detalle las opciones de configuración que ayudan a reducir el tamaño de la compilación.

Opción de configuración de QtDescripción
-staticProduce ficheros de archivo para el enlazado estático. Un binario estático se enlaza con todas las librerías y dependencias necesarias incrustadas dentro del propio archivo ejecutable. Esto significa que cuando se ejecuta el programa, utiliza su propia copia interna de las bibliotecas necesarias, en lugar de depender de las externas. Esto permite al enlazador eliminar partes innecesarias del código binario. Esta es la solución más óptima para entregas de un solo ejecutable.
-ltcgLink Time Optimization (LTO) es una potente técnica que puede mejorar significativamente el rendimiento y reducir el tamaño de su archivo ejecutable analizando y optimizando el código binario en la fase de enlace.
-reducir-exportacionesReduce la cantidad de símbolos exportados.
-gc-binariesElimina las partes innecesarias de los binarios. Coloque cada función o dato en su propia sección y active la recolección de basura de las secciones no utilizadas.
-submódulos qtbase,qtdeclarative,qtqmlscriptcompiler,qtsvgSubmódulos a compilar. Limitar dependencias a funciones innecesarias.
-omitir qtlanguageserver,qtquicktimelineElimina de la compilación los submódulos incluidos automáticamente. Limitar las dependencias de funciones innecesarias.
-disable-deprecated-hasta <versión>Elimina la implementación obsoleta.

Establece el valor QT_DISABLE_DEPRECATED_UP_TO en <versión>. QT_DISABLE_DEPRECATED_UP_TO se utiliza para eliminar métodos obsoletos tanto de la API como de la ABI. <versión> es un valor hexadecimal. Por ejemplo, utilice 0x070000 para eliminar todo el código que está obsoleto en Qt 7.0.0 o versiones anteriores. Por defecto, <version> se establece en 0x040000 y 0x050000 en Windows y no Windows respectivamente.

Además, puede eliminar características una a una como se describe en Incluir o excluir características. Esto puede causar restricciones para los componentes y funcionalidades disponibles. No se prueban todas las combinaciones. Qt prueba combinaciones específicas de opciones de configuración mínimas en el sistema de Integración Continua (CI); prueba una configuración Linux embebida altamente minimizada, y configuraciones ligeramente menos minimizadas para otras plataformas. Estas configuraciones son para ejecutar aplicaciones Quick.

El comando Qt configure también soporta el parámetro de línea de comandos - - (doble guión) que permite al usuario inyectar argumentos CMake extra como -DCMAKE_CXX_FLAGS="-march=native". En caso de compilación cruzada, estos parámetros pueden añadirse mediante -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain.cmake como se describe en Ejemplo de archivo Toolchain. La siguiente tabla enumera algunas opciones que puede considerar utilizar con GCC:

Opción del compiladorDescripción
-march <arquitectura>Arquitectura de destino. Utilice "nativa" si la aplicación se ejecuta en la misma arquitectura en la que se compila.
-mtune <ajuste>Indica al compilador que genere código que aproveche las características de la arquitectura de procesador especificada, como su conjunto de instrucciones, número de registros y jerarquía de caché.
-fno-asynchronous-unwind-tablesReduce el tamaño del binario. Tenga en cuenta que desactivar las tablas de desenrollado asíncrono puede tener implicaciones en el rendimiento, la compatibilidad y la facilidad de mantenimiento de su código. En general, se recomienda utilizar esta opción sólo cuando sea necesario, después de considerar cuidadosamente sus efectos potenciales.
-fno-unwind-tablesReduce el tamaño de los binarios. Tenga en cuenta que desactivar las tablas de desenrollado puede afectar al rendimiento, la compatibilidad y la facilidad de mantenimiento de su código. En general, se recomienda utilizar esta opción sólo cuando sea necesario, después de considerar cuidadosamente sus efectos potenciales.

Cabe señalar que -fno-unwind-tables es una versión más agresiva de -fno-asynchronous-unwind-tables, ya que deshabilita la creación de tablas de desenrollado por completo, mientras que esta última sólo deshabilita la generación asíncrona de tablas de desenrollado.

-fomit-frame-pointerReduce el tamaño del binario. Cuando esta opción está activada, el compilador no almacena un puntero de marco en la pila para cada llamada a función. En su lugar, utiliza el puntero de pila como puntero de marco, lo que puede ahorrar memoria y mejorar el rendimiento. Cabe señalar que algunos compiladores, como GCC y Clang, activan -fomit-frame-pointer por defecto al compilar para determinadas arquitecturas, como ARM y PowerPC, o en determinados modos de optimización.
-fno-exceptionsReduce el tamaño del binario. Cuando esta opción está activada, el compilador no genera código para bloques try-catch, y cualquier intento de lanzar o atrapar excepciones resulta en errores de ejecución. Qt funciona sin excepciones, pero algunas dependencias pueden requerir excepciones.
-no-pieReduce el tamaño del binario. En general, -fno-pie debe utilizarse con precaución y sólo cuando sea necesario, ya que puede tener implicaciones en la compatibilidad y el rendimiento de su código compilado. El ejecutable independiente de la posición también añade seguridad. Para más información sobre el código independiente de la posición, consulte Address Space Layout Randomization en Wikipedia.

La siguiente tabla enumera las opciones del enlazador:

Opción del enlazadorDescripción
-no-pieReduce el tamaño del binario. En general, -fno-pie debe utilizarse con precaución y sólo cuando sea necesario, ya que puede tener implicaciones en la compatibilidad y el rendimiento de su código compilado. El ejecutable independiente de la posición también añade seguridad. Para más información sobre código independiente de la posición, consulta Address Space Layout Randomization en Wikipedia.

Paso 3: Construir su aplicación

Una vez instalado Qt, puede empezar a crear aplicaciones con él.

Optimice la generación de código QML con comandos de proyecto CMake. Para obtener más información sobre la generación de código QML, consulte qt_add_qml_module y Best Practices for QML y Qt Quick.

El comando del siguiente fragmento de código de CMake reduce el tamaño del binario:

set_target_properties(
        ExampleApp
    PROPERTIES
        QT_QMLCACHEGEN_ARGUMENTS "--only-bytecode"
)

Si planeas construir tu aplicación desde un IDE, necesitas registrar la versión de Qt explícitamente allí. Para Qt Creator, ver Qt Creator: Añadir versiones Qt.

Si estás usando la línea de comandos para construir tu aplicación, sigue la guía específica de la plataforma.

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