编译方案网上都有,这是stackoverflow上最详尽的一篇:https://stackoverflow.com/questions/50510457/how-to-compile-qt-webengine-5-11-on-windows-with-proprietary-codecs/50510458#50510458
作者用的是VS2017,用VS2019的对应命令行也支持的!
我是编译的64位支持,编译结果:占用空间117G,所以需要有大硬盘空间,内存峰值占用11G
CPU:i7-4790K,加上解决问题,耗费了10个小时,估计一切顺利的话,6个小时差不多,好CPU的话会更快
碰到的疑难问题:
1. win10系统,运行D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe -- -webengine-proprietary-codecs,报告需要Windows SDK version 10.0.18362 or newer,webengine将不会built
因为未知原因,win10 SDK 18362一直安装失败,从另外一台安装成功的机器上,把C:\Program Files (x86)\Windows Kits\10打包放到问题机同样目录,好了,VS编译里能认出了,因为虽然安装失败,但是注册表信息已经有了,所以拷贝文件的方法可行!
但是,上述qmake命令仍然报告找不到SDK,于是发现Src\qtwebengine下configure.pri会检测WindowsSDKVersion,看代码,以为是系统环境变量,
qtwebengine_isMinWinSDKVersion) {
requested_major = $$1
requested_minor = $$2
WIN_SDK_VERSION = $$(WindowsSDKVersion)
isEmpty(WIN_SDK_VERSION)|equals(WIN_SDK_VERSION, "\\") {
qtwebengine_platformError("Could not detect Windows SDK version (\'WindowsSDKVersion\' environment variable is not set).")
return(false)
}
其实是vs命令行的环境变量,输入;set可以看到:
已经有了,问题在于QT仍然不认识,即使改了configure.pri,强制返回True。
想到是不是QT安装时检测的,于是把QT 5.14.2带源码重新安装,OK了!
2. 空间不够了,导致Src\qtwebengine\src\core\release\obj\services\tracing下lib_cc.pdb生成残缺,报告找不到此文件。
解决:删除此目录lib下和lib_cc.pdb日期相近的.obj文件,估计也可以删除所有.obj文件,重新运行"D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\nmake.exe",会重新生成完整的对应文件
3. 未找到PDB“qtmain.pdb”(使用“qtmain.lib(qtmain_win.obj)正在链接对象,如同没有调试信息一样
解决:定位到Src\qtbase\src\winmain,用QT 5.14.2打开,项目配置选择MSV2017 64bit,点构建,可以看到qtmain.pdb在msvc2017_64\lib\下,生成了应该不用再做什么,问题能解决