一、前言
因为要使用VS2017还得兼容XP,5.6.3是支持XP的最高版本,目前网络上好多资料都是收费的或者是讲的很笼统地,所以我自己写一下过程记录一下。
二、编译前准备
- python:网上说要控制版本我使用了较新版本的
python3.9.13
编译Qt5.6.3并没有出现问题。 - ActivePerl:我使用的版本为
5.22.1
。 - Ruby:我使用版本为
2.4.2
。 - jom:这是一个可选项,如果不使用jom的话会非常慢,使用了jom速度会提升很多,如果嫌麻烦可以不用。
三、编译过程
- 第一步:打开
x86 Native Tools Command Prompt for VS 2017
,这是32位的,如果要编译64位搜索VS 2017
找到X64的来用就行,不一定非得使用Native Tools,因为我编译32位Qt5.6.3所以需要上述工具。 - 第二步:进入Qt5.6.3源码所在路径,我要兼容XP的Qt库,例子跟测试还有qtwebengine我都不需要,我的命令为:configure -opensource -confirm-license -platform win32-msvc2017 -target xp -debug-and-release -shared -D USING_V110_SDK71 -qt-zlib -qt-libpng -qt-libjpeg -qt-pcre -skip qtwebengine -nomake tests -no-compile-examples -nomake examples -mp -prefix “F:\QT5.6.3Source\second_install”,如果没有额外需要只需要修改一下最后的安装目录即可。
- 第三步:前面命令执行时间很快,出现错误需要自己根据不同情况进行修改,若一切顺利,则直接执行
nmake
,但是我还是建议安装jom,执行jom /J 16
,这样会快很多,然后开始漫长的等待。 - 第四步:开始安装,执行
nameke install
或者jom install
,按照上述对应命令,等待结束即可。
四、总结
将编译结束后的源码的bin
目录加入环境变量Path中即可使用,可以选择不安装Qt5.6.3,记得重启一下。
五、Qt4升级到Qt5的BUG:
UI中编辑框、按钮、Radio等控件可能无法正常点击交互,解决办法为在你的主界面类中添加如下代码:
protected:
//解决QT5界面不刷新的BUG。
virtual void showEvent(QShowEvent *event)
{
this->setAttribute(Qt::WA_Mapped);
QWidget::showEvent(event);
}
六、伸手党资源
本着开源的心态放一下我的编译完毕的库,伸手党可以直接拿去用,使用7Z解压缩即可,网盘链接为:提取码为QXY6