这篇教程应用于Windows平台上要编译32bit的应用程序(包含Qt WebEngine模块),由于Qt5.12中的WebEngine模块要求在Windows上必须得安装了VisualStudio2017(只有64bit),QT安装的时候也只有一个ms2017 64bit的编译器,导致QT无法编译32bit的应用程序;解决方案就是手动将QT源码编译成32位的QT,也包括WebEngineView;
Qt5.11编译失败,原因是在编译过程中由于VS2017 15.8 std::aligned_storage error导致编译中止,所以改为编译Qt5.12
一、环境
1.VS 2017安装;
2.ActivePerl安装;
3.Python 2.7安装
(不能用Python 3及以上版本,官方暂不支持);
4.Ruby安装
4.1 Ruby源码下载; Ruby Installer下载;
4.2 如果是下载完成后解压到本地(我解压到D:\program\ruby_src),执行下面命令
cd D:\program\ruby_src
win32\configure.bat i686-mswin32
nmake
nmake rubyw.exe//我在这步出现错误,所以改为下载rubyinstaller进行安装
namke test
nmake DESTDIR=D:\program\ruby install // 我的安装路径为D:\program\ruby
// 执行完成后,把D:\program\ruby\bin加入到PATH变量
5.icu
解压即用,比如解压到C:\icu4c,并添加环境变量;
6.openssl
(不要以为版本号看起来更高就下载那个openssl-1.0.2h.tar.gz,该版本不兼容!)
编译openssl流程如下:
1.解压下载的openssl源码,比如解压到C:\openssl-1.0.1t ;
2.打开“VS2017 开发人员命令提示“;
3.打开 VS 2017的 x64_x86交叉工具命令提示符,执行命令cd C:\openssl-1.0.1t perl Configure VC-WIN32 --prefix=D:\program\openssl ms\do_ms nmake -f ms\ntdll.mak nmake -f ms\ntdll.mak install
二、QT源码编译
1.下载Qt最新源码 qt-everywhere-src-5.12.0-rc2.zip
2.解压到D:\Qt\static\qt-everywhere-src-5.12.0-rc2;
3.打开 VS 2017的 x64_x86交叉工具命令提示符;
4.设置环境
REM Set up \Microsoft Visual Studio 2017, where <arch> is \c amd64, \c x86, etc. CALL "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32" SET _ROOT=D:\Qt\static\qt-everywhere-src-5.12.0-rc2 SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH% REM Uncomment the below line when using a git checkout of the source repository REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH% SET _ROOT=
将以上内容保存为qt5vars.bat,保存到D:\Qt\static\qt-everywhere-src-5.12.0-rc2\目录下;
5.执行命令
cd D:\Qt\static\qt-everywhere-src-5.12.0-rc2
D:\Qt\static\qt-everywhere-src-5.12.0-rc2\qt5vars.bat
configure --prefix=D:\Qt\static\qt-static-5.12 -debug-and-release -nomake examples -nomake tests -opensource
// 其中会出现两个选择,分别输入o回车确认(估计没有人是用花钱的,如果是,那么选择另外一项),y回车确认。
6.执行命令
因为我要确认qtwebengine是否能编译成功,故执行以下的命令,如果不需要确认则去掉后边的module-qtwebengine执行nmake即可
//nmake module-qtwebengine
nmake & nmake install
如果使用jom,则nmake替换成jom,jom是Qt官方工具,据说比nmake编译速度快
jom安装教程
如果是jom,那么执行
//jom module-qtwebengine
jom & jom install
等几个小时编译好,编译速度取决于电脑性能
7.完成后你会发现所有的东西都放在C盘Qt目录下了
三、报错记录
1.模块计算机类型“x86”与目标计算机类型“x64”冲突
解决方案
选择VS 2017的 x64_x86交叉工具命令提示符,这就是上边编译第四步选择该命令提示符的原因。
2.内存不足
解决方案
选择VS 2017的 x64_x86交叉工具命令提示符,这就是上边编译第四步选择该命令提示符的原因。
3.无法打开atl.lid
1.在程序中找到VS 2017,右键->更改
2.选择ATL相关选项,执行修改,VS 2017组件附图