前言
在开发过程中遇到Qt的bug,特别是QAccessibleWidget模块内部崩溃的问题,官方的BugReport可能无法及时修复。为了不耽误项目,决定自行修改Qt源码并进行编译。
环境搭建
在Windows 10专业版64位系统下,使用visual studio 2019作为编译器。此外,利用git和小乌龟tortoiseGit进行版本管理。安装时选择64位且为LTS版本的ruby、python和perl,安装路径确保无中文或空格,以避免编译时出现问题。
目标与依赖
目标是编译Qt5.15.2版本,支持msvc2019编译器的64位Windows环境。所需依赖包括ruby、python和perl,均从官网下载安装包。安装过程简单,选择“下一步”,确保“自动添加到系统环境变量”选项被选中。
Qt源码获取
Qt源码可从官方网站下载页面或github仓库获取。使用git clone或小乌龟下载至指定路径,如“F:\qt\qt5”。下载完成后,通过小乌龟的右键菜单更新子模块至tag 5.15.2版本。
编译过程
在仓库上一层目录下创建bat脚本,引用vs编译器环境变量并执行configure命令。配置项包括指定安装路径、使用开源协议、自动确认协议、指定库类型、跳过某些模块的编译、开启多进程编译、只编译release模式、优化文件尺寸等。编译过程可能需要2个半小时左右,完成后执行nmake install命令进行安装。
bug修复与测试
针对QAccessibleWidget模块的bug,定位到问题根源并进行修改。将修改后的dll替换到已安装的Qt库中,程序正常运行且测试未再出现空指针错误。然而,只替换一个dll不可靠,需要确保编译环境与官方一致。遇到的另一个问题是,替换dll后打包的程序在某些用户电脑上启动后界面无法正常显示,这表明只替换dll可能不足以解决兼容性问题。最终,替换所有新编译的库,确保了程序的稳定运行。
② Qt 6.5.2 Creator MSVC 编译器配置
对于Qt 6.5.2版本,MSVC编译器的配置与网上文章有差异,下文详细记录。
环境为Windows 10,使用Qt Creator 11.0.2版本。Qt 6.5.2需要配合MSVC 2019。
直接下载MSVC 2019可避免安装整个Visual Studio,节省资源。下载地址为:microsoft.com。
尝试安装VS Community 2019,但Qt Creator无法识别MSVC编译器。
解决方法是仅下载MSVC,不安装Visual Studio。安装过程无需修改注册表。
正确配置MSVC(2019)为Qt编译器的详细步骤可参考ld246.com文章。
解决方案是安装Build Tools for Visual Studio 2019(版本16.11)。此工具包含独立的MSVC编译器、库和脚本,比完整安装VS更节省资源。
安装完成后,确认目录:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"包含文件"vcvarsall.bat",问题解决。
至此,Qt Creator已经能自动检测到MSVC 2019的编译器。