QT5.11_ms2017_32bit源码编译

[原文详见 简书 作者:觉醒的苍红之刃]

      这篇教程应用于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组件附图 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老杜095

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值