Este proceso es bastante tedioso y consume mucho tiempo, pero explicaré cada paso en detalle aquí para el beneficio de otros que intenten compilar Qt en el futuro.
El primer paso es instalar todos los requisitos previos.
- ActivePerl, que se utiliza durante el proceso de configuración. Tendrá que reiniciar después de instalar Perl ya que modifica las variables de entorno.
- El Windows SDK 7.1 (anteriormente llamado Platform SDK). Asegúrese de incluir las bibliotecas x64 cuando seleccione los componentes para instalar.
Descargar el archivo fuente de Qt desde el Qt Downloads page.
Extraiga el contenido del archivo a una ubicación fácil de recordar (como C:\
). Debe recordar esta ubicación más adelante, ya que la utilizaremos para establecer algunas variables de entorno.
Ahora abra el símbolo del sistema de Windows SDK 7.1. Comenzamos definiendo el medio ambiente a modo de lanzamiento de 32 bits (que necesitamos para construir algunas de las herramientas como aplicaciones de 32 bits):
setenv /release /x86
Establecer las variables de entorno siguientes (ejemplo siguiente se supone que ha extraído a C:\
):
set QTDIR=C:\qt-everywhere-opensource-src-4.8.0
set PATH=%PATH%;%QTDIR%\bin
Ahora ejecute cd %QTDIR%
y especifique las opciones de configuración - ejemplo se incluye a continuación:
configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff
-qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform
win32-msvc2010
Una vez que el proceso de configuración es completa, cd
al directorio src
y ejecute:
qmake
nmake
Este proceso puede tomar una cantidad considerable de tiempo, por lo que ahora sería un buen momento para tomar un descanso y responder a algunas preguntas aquí en Stack Overflow :)
Las herramientas ahora están compiladas y necesita compilar Qt como una biblioteca de 64 bits. Ingrese el siguiente comando:
setenv /x64
Deberá volver a configurar las variables de entorno desde el paso 5. Ingrese esos comandos ahora.
Run cd %QTDIR%
y vuelva a ejecutar el comando configure
asegurándose de especificar una opción adicional:
configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff
-qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform
win32-msvc2010 -no-qmake
La opción -no-qmake
es muy importante - que indica que queremos omitir la compilación del programa qmake.exe
porque queremos mantener la versión de 32 bits.
Ahora las cosas se complican mucho aquí debido a algunos problemas de dependencia. Las herramientas (como moc
) que Qt necesita para compilar la biblioteca principal y algunos de los otros componentes se enumeran como dependencias en el archivo src.pro
. Esto significa que el compilador intentará compilarlos como aplicaciones de 64 bits y luego tratar de ejecutarlos, lo cual, por supuesto, fallará en un sistema de 32 bits. Entonces, lo que tenemos que hacer es editar src.pro
y eliminar esas dependencias nosotros mismos. Desplazarse hacia abajo cerca de la línea 85 y busque una línea que comienza con:
!wince*:!ordered:!symbian-abld:!symbian-sbsv2 {
Cada línea subsiguiente en la sección enumera una sub-objetivo y sus dependencias. Lo que quiere hacer ahora es eliminar todas las dependencias que comienzan con src_tools_
. Por ejemplo:
src_gui.depends = src_corelib src_tools_uic
se convierte en:
src_gui.depends = src_corelib
Puede haber una mejor manera de hacer esto, pero no han descubierto todavía :)
Ahora cd
en el src
directorio una vez más y ejecute el siguiente comando
nmake sub-winmain sub-corelib sub-xml sub-network sub-sql sub-testlib
sub-gui sub-qt3support sub-activeqt sub-opengl sub-xmlpatterns sub-phonon
sub-multimedia sub-svg sub-script sub-declarative sub-webkit
sub-scripttools sub-plugins sub-imports
Esto construye solo las bibliotecas de Qt y omite las dependencias de la herramienta. Tenga en cuenta que esto también puede tomar una cantidad de tiempo considerable.
Ahora debería tener librerías de 64 bits en la carpeta lib
que puede vincular en sus aplicaciones de Qt de 64 bits.
Editar: resulta que incluso esto no fue suficiente ya que todavía encontramos con algunos problemas al vincular la QtWebKit4.dll
biblioteca (algo acerca de símbolos sin resolver). Resulta que someone else has already found the solution y necesita cambiar QMAKE_HOST.arch
a en WebCore.pro
.
Además, las opciones anteriores construirán QNetwork4.dll sin soporte OpenSSL (no podrá acceder a sitios a través de HTTPS, ni siquiera en un QWebView). Esto, afortunadamente, no es demasiado difícil de arreglar. Descargar y construir OpenSSL para Win64 y añadir las siguientes opciones para el comando en el paso # 9:
-openssl -I C:\OpenSSL\inc32 -L C:\OpenSSL\out32dll
(Vas a tener que cambiar las rutas si ha instalado OpenSSL en otro lugar que C:\OpenSSL
.)
Además de edición: para ahorrar la molestia de hacer esto por sí mismo, he subido las bibliotecas compiladas aquí:
http://www.box.com/s/9710cbb278ef4890a7b5
Y sin embargo, la gente todavía habla Qt como si fuera esta panacea para el desarrollo de aplicaciones, que es hermoso y simple y * fácil *. Aún no he visto ninguna evidencia de esto. Cuando traté de trabajar con él, mi conclusión es que simplemente no vale la pena, especialmente teniendo en cuenta que una vez que terminas, todavía no tienes una aplicación totalmente nativa. –
@CodyGray: Completamente en desacuerdo: ¿por qué otra cosa pasaría por este problema para usarlo? –
@GeorgeEdison: estoy compilando mi aplicación Qt con sus binarios compilados de 64 bits, pero mi aplicación se cuelga. Creo que esto tiene que ver con el hecho de que utilicé QTableView, que se bloquea debido a un error en el compilador de MS Visual C++, consulte https://bugreports.qt-project.org/browse/QTBUG-19175 y https: //bugreports.qt-project.org//browse/QTBUG-11445. ¿Usaste MSVC SP 1 para compilar los binarios? Estoy recompilando Qt 64-bit ahora mismo, pero lo estoy preguntando porque creo que las bibliotecas compiladas cargadas probablemente también sean útiles para otros y, por lo tanto, es importante que estén libres de errores. – yyzz