参考了这篇文章(http://wangjie.rocks/2015/12/28/compile-qt/)之后自己也编译不下几十次,才得已成功。特记下步骤。
需要用到的工具及源码(选择相应的64位或32位版):Cygwin、ActivePerl、Python、ICU源码、openssl源码、Ruby、winflexbison、sqlite-amalgamation
如果以上工具或源码网站打不开请到这个镜像站点下载:http://www.mirrorservice.org/
安装好上面所需要的工具,除ICU与openssl需要编译以外。
编译前提条件必须安装visual studio 2013或2015,本文是用Visual studio 进行静态编译
一、编译icu
准备工作:安装cygwin,至少选择安装以下几个工具:make、dos2unix、binutils
编译步骤:
1、将icu源码解压,
2、进入VS2013命令提示:Visual Studio Tools-》VS2013 x64 本机工具命令提示
3、设置环境变量:set PATH=%PATH%;E:\cygwin64\bin
4、进入icu源码所在目录下的source目录
4、执行命令:
dos2unix *
dos2unix -f configure
5、编译source目录下的runConfigureICU文件将Cygwin/MSVC部分的相关编译选项MD改为MT
6、执行命令:(可以用这个命令查看相关的编译选项:bash runConfigureICU --help)
bash runConfigureICU –-enable-debug -–disable-release Cygwin/MSVC -prefix=/cygdrive/F/3rd/icu-lib –enable-static –disable-shared
说明:
-prefix: 设置安装目录,注意,以 /cygdrive 开头
–enable-debug –disable-release:编Debug版本,什么都不加,默认为release
–enable-static –disable-shared:静态编译 lib
–disable-static –enable-shared:动态编译 dll
实际上要编译4次,分别对应不同的选项进行分别编译才行,我就是因为没有次四种组合分别编译导致始终在编译QT过程中失败。
7、静态编译,执行命令 E:\cygwin64\bin\make.exe ,注意用 cygwin64的make
编译完成后,安装icu,执行命令 E:\cygwin64\bin\make.exe install
命令执行完毕后,icu的库文件就会复制到之前 -prefix 参数指定的目录中
清理临时文件,执行命令 E:\cygwin64\bin\make.exe clean
切记切记,四种编译选项,编译四次
1、–-enable-debug -–disable-release –enable-static –disable-shared
2、–-enable-debug -–disable-release –disable-static –enable-shared
3、–-disable-debug -–enable-release –enable-static –disable-shared
4、–-disable-debug -–enable-release –disable-static –enable-shared
如果选项出错请请通过:bash runConfigureICU --help 查看编译选项用法,也许不同版本选项有所不一样
二、编译openssl
下载地址:https://www.openssl.org/ (选择相应的版本进行下载)
进入VS2013命令提示:Visual Studio Tools-》VS2013 x64 本机工具命令提示,进入源码根目录
配置openssl,执行命令 perl Configure VC-WIN32 –prefix=F:\openssl
可能通过命令perl Configure --help 查看帮助,或者查看readme文件等参考上面的编译方法,可能每个版本的编译方法不一致,一定要看说明或安装文档
–prefix 命令为openssl编译完成后的安装路径
VC-WIN32 为32位,VC-WIN64A 为64位
生成makefile,执行命令 ms\do_ms.bat
静态编译,执行命令 nmake -f ms\nt.mak
或者动态编译,执行命令 nmake -f ms\ntdll.mak
要修改 MT 或 MD 编译选项,可以在 .mak 文件中修改
编译完成后,安装openssl,执行命令 nmake -f ms\nt.mak install
命令执行完毕后,openssl的库文件就会复制到之前 –prefix 参数指定的目录中
清理临时文件,执行命令 nmake -f ms\nt.mak clean
三、编译QT
修改QT源码目录下的:\qtbase\mkspecs\common\msvc-desktop.conf 文件将MD选项改为MT选项
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
进入VS2013命令提示:Visual Studio Tools-》VS2013 x64 本机工具命令提示,进入QT源码根目录:
执行命令:
SET _ROOT=F:\QT\qt-opensource-src
SET PATH=E:\jom;%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%;E:\icu\bin;E:\icu\lib;E:\openssl\bin;E:\Python\Python35;C:\Perl64\bin;E:\win_flex_bison-latest
set LIB=%LIB%;E:\icu\lib;E:\openssl\lib
set INCLUDE=%INCLUDE%;E:\icu\include;E:\openssl\include
SET _ROOT=
SET _ROOT=F:\QT\qt-opensource-src
set SQLITE3SRCDIR=E:\sqlite-dll-win64-x64-3160200
SET PATH=E:\jom;%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%;E:\icu\bin;E:\icu\lib;E:\openssl\bin;E:\Python\Python35;C:\Perl64\bin;E:\win_flex_bison-latest;E:\Ruby23-x64\bin;E:\Qt\qt_5.7.1_release_2013_static_64\bin;E:\curl
set LIB=%LIB%;E:\icu\lib;E:\openssl\lib;E:\Qt\qt_5.7.1_release_2013_static_64\lib
set INCLUDE=%INCLUDE%;E:\icu\include;E:\openssl\include;E:\Qt\qt_5.7.1_release_2013_static_64\include
SET _ROOT=
perl Tools\Scripts\build-webkit --qt
可以用perl Tools\Scripts\build-webkit --help 查看编译选项