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:
- Qt para Windows - Construir desde el código fuente
- Qt para macOS - Construir desde el código fuente
- Qt para Linux: compilación desde el código fuente
- Configurar un dispositivo Linux integrado
- Qt para Android - Creación desde el código fuente
- Qt para iOS - Creación desde el código fuente
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 Qt | Descripción |
|---|---|
| -static | Produce 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. |
| -ltcg | Link 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-exportaciones | Reduce la cantidad de símbolos exportados. |
| -gc-binaries | Elimina 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,qtsvg | Submódulos a compilar. Limitar dependencias a funciones innecesarias. |
| -omitir qtlanguageserver,qtquicktimeline | Elimina 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 compilador | Descripció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-tables | Reduce 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-tables | Reduce 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 |
| -fomit-frame-pointer | Reduce 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-exceptions | Reduce 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-pie | Reduce 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 enlazador | Descripción |
|---|---|
| -no-pie | Reduce 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.