instalar - Cómo construir una aplicación MinGW Qt de 64 bits en Windows(con Qt Creator)
qt windows (2)
Estoy buscando (y seguro que no soy el único) la forma más sencilla de crear programas Qt de 64 bits basados en MinGW en Windows. Directo significa un esfuerzo y tiempo mínimos (por ejemplo, para construir y configurar). Actualmente ejecuto el entorno de desarrollo oficial normal del sitio web qt-project.org para Windows de 32 bits con MinGW / OpenGL y QtCreator. Por supuesto, he leído la página wiki (sin terminar ...) de 64 bits de qt-project.org y también leí diferentes preguntas de stackoverflow, pero todavía estoy confundido. Sé que el tema de cómo crear Qt de 64 bits se trata en otras publicaciones, pero esta no es mi pregunta, lo que necesito es una descripción general y el puerto MinGW de 64 bits más favorable.
Una cosa que me confundió, por ejemplo, fue que las DLL en el paquete "x64-Qt-5.2.1 + QTCreator-3.0.1- (gcc-4.8.2-seh) .7z" del proyecto sourceingge de mingwbuilds parecen ser de 32 bits .
Para aclarar un poco mi pregunta, permítanme también hacer algunas preguntas relacionadas:
- ¿Debo crear primero un entorno de desarrollo de 64 bits para producir ejecutables de 64 bits o puedo mantener mi entorno predeterminado normal y solo intercambiar la cadena de herramientas MinGW con una cadena de herramientas de 64 bits?
- ¿Dónde puedo obtener bibliotecas Qt de 64 bits para la implementación, o tengo que compilarlas yo mismo? ¿O dónde puedo obtener un entorno de desarrollo de 64 bits, incluidas las bibliotecas de 64 bits?
- Si tengo que construirlo yo mismo, ¿qué puerto de 64 bit de MinGW es el más favorable?
Muchas gracias por tu ayuda.
Puede instalar MSYS2, que incluye un gestor de paquetes y versiones precargadas de carga de paquetes, incluido Qt, que también puede utilizar fuera del entorno MSYS2 con, por ejemplo, Qt Creator (que también se encuentra en los repositorios).
La instalación es fácil:
- Descarga el instalador desde la página web .
Abra el símbolo del sistema de MSYS2 e instale Qt:
pacman -Sy mingw-w64- {i686, x86_64} -qt5
El qmake de Qt se instala en
<msys2>/mingw{64,32}/bin
y se puede acceder a él desde los respectivos comandos.
De la misma manera, puede instalar cientos de otras bibliotecas y herramientas que pueda necesitar para su desarrollo.
En cuanto al resto de la implementación de la aplicación, lo remito a la página wiki del proyecto Qt en la implementación de Windows .
Creo que la respuesta de rubenvb es ahora la mejor respuesta a esta pregunta: MSYS2 contiene un Qt actualizado construido con MinGW-w64, que es lo que necesitará para crear aplicaciones Qt de 64 bits. Recomiendo usar el enlace de Qt wiki en la respuesta de rubenvb para la implementación; ha mejorado mucho
Qt64-NG
Recomiendo instalar su compilación Qt del proyecto Qt64-NG .
El proyecto proporciona una compilación actualizada de x64 Qt con MinGW-w64. El compilador GCC del proyecto MinGW-w64 también se incluye en las versiones del instalador (pero no en el 7z). Querrá la misma versión de GCC en MinGW-w64 que se utilizó para compilar Qt para crear sus propias aplicaciones, así que recomiendo elegir el instalador.
Deberá elegir una compilación con el método de desenrollado de marcos de pila de excepción que desee. La pregunta ¿Cuál es la diferencia entre sjlj vs dwarf vs seh? describe las diferencias entre los tipos de controladores de excepción que están presentes en diferentes compilaciones de Qt. SJLJ fue la única opción antes de que se lanzara GCC 4.8, pero las versiones posteriores de GCC son compatibles con SEH. Cualquiera de las dos opciones funcionará, aunque SEH es más eficiente.
Postinstalación
Después de instalar Qt, puede agregar los directorios Qt / qt-ver / qt-ver / bin y Qt / qt-ver / mingw64 / bin a su variable User o System Path en sus Variables de entorno, que le permitirán usar MinGW GCC de -w64 para construir a partir de su proceso de construcción preferido. Qt Creator detectará automáticamente MinGW-w64 como un compilador instalado después de hacer esto.
Si prefiere no agregar a su ruta, puede especificar el compilador para la versión que acaba de configurar con Qt Creator, manualmente. Es probable que necesite agregar la versión Qt seleccionando qmake.exe en Opciones> Crear y ejecutar. También querrá seleccionar gdb.exe como su depurador en la pestaña Construir y ejecutar> Depuradores. Se ubicará en Qt / qt-ver / qt-ver / mingw64 / bin.
Puede intercambiar la cadena de herramientas MinGW-w64 con otras cadenas de herramientas. Para hacer esto en Qt Creator puedes crear e intercambiar entre kits.
Despliegue
Puede utilizar la compilación Qt64-NG para el desarrollo y la implementación. Para implementarlo, querrá empaquetar los archivos que su aplicación necesitará para ejecutar con su aplicación, para que su usuario final no tenga que realizar ningún paso de instalación adicional.
Primero, cree una carpeta de implementación (probablemente con el nombre de su aplicación) y copie el archivo exe de su aplicación. Si está utilizando Qt Creator, puede encontrar la ruta a su aplicación exe en la pestaña Proyectos en la barra lateral o en el archivo .pro de la aplicación, si está especificado allí.
Hay dos formas de copiar las dependencias dll que necesitará para ejecutar su aplicación. Puede copiar los archivos necesarios manualmente o puede usar windeployqt, un programa provisto con su instalación de Qt que copiará automáticamente (la mayoría) las dependencias necesarias para la implementación en la carpeta de implementación de la aplicación que acaba de crear.
Copiar archivos manualmente
Copie los siguientes archivos dll de las carpetas Qt / qt-ver / qt-ver / bin y Qt / qt-ver / mingw64 / bin en la carpeta de implementación de la aplicación. Algunos archivos dll estarán ubicados en ambas carpetas, y cualquiera de las dos ubicaciones es aceptable para su uso:
icudt54.dll
icuin54.dll
icuuc54.dll
libgcc_s_sjlj.dll or libgcc_s_seh.dll (corresponds with chosen stack unwinding method)
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
También deberá incluir cualquier archivo Qt5 * .dll que corresponda con los módulos Qt que está utilizando en su proyecto.
A continuación, deberá copiar cualquier archivo dll de plugin que requiera Qt. Qt buscará complementos por defecto en la carpeta de implementación de aplicaciones / complementos. Puede encontrar las carpetas de complementos que desea copiar en Qt / qt-ver / qt-ver / plugins. La excepción a esto es la carpeta de plataformas, que intentará encontrar en el directorio / plataformas de implementación de la aplicación. La siguiente estructura de directorio indica dónde copiar archivos para un proyecto mínimo. Copie cualquier otro complemento necesario, incluida la carpeta que lo contiene, en su carpeta de despliegue / complementos.
/desplegar
/platforms
/plugins
icudt54.dll
icuin54.dll
icuuc54.dll
app.exe
libgcc_s_seh-1.dll
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
/ desplegar / plataformas
qwindows.dll
/ desplegar / plugins / imageformats
qjpeg.dll
Windeployqt
Puede encontrar windeployqt.exe en su carpeta Qt / qt-ver / qt-ver / bin. Windeployqt requiere que su carpeta Qt / qt-ver / qt-ver / bin y mingw64 / bin esté en su usuario o variable de ruta del sistema para que funcione correctamente.
Para usar windeployqt, abra una ventana de comandos y cambie al directorio de implementación de su aplicación. La sintaxis para ejecutarlo se puede encontrar en Qt Deployment . Probablemente querrás ejecutarlo de la siguiente manera:
windeployqt.exe app.exe
Windeployqt (Qt 5.4.1) copiará las carpetas de complementos de formatos de imagen e iconos en el nivel de directorio de implementación de su aplicación en lugar de dentro de una carpeta de complementos. Esta es la ubicación correcta, ya que altera donde Qt busca estas carpetas.
Solución de problemas
Puede probar si tiene los archivos correctos ejecutando su aplicación en una computadora que no tiene la biblioteca de desarrollo Qt instalada y en la ruta. Si no obtiene errores en el inicio de su aplicación, sabrá que Qt encontró las dependencias que necesitaba y puede empaquetar su aplicación para su distribución.
Si está recibiendo errores, consulte la guía de implementación de Tripleboot . También puede intentar usar Process Explorer para ver qué dependencias intenta cargar su aplicación cuando genera un error de falta de dependencia.
embalaje
Con frecuencia las aplicaciones se distribuyen con un archivo y / o un instalador. Qt Installer Framework proporciona una forma conveniente de empaquetar su aplicación Qt para su distribución como un ejecutable del instalador.