Skip to main content

Command Palette

Search for a command to run...

Widnows下编译Qt5.15.8

Updated
1 min read

编译环境

操作系统: Windows 10 Professional 22H2

编译器:Visual Studio 2019 Community CPU:Intel Core i5-8300H @ 2.3GHz

内存:16GB

参考官方文档: https://doc.qt.io/qt-5/windows-building.html https://doc.qt.io/qt-6/qtwebengine-platform-notes.html

准备工作及依赖

编译Qt5.15.8依赖现在基本都包含在源代码里了:

  • 在qtbase\bin和gnuwin32\bin中

  • CMake需要自己另行安装,并加入至path环境变量中

  • 如果需要 Make 本地文档,则需要安装 LLVM WebEngine所需依赖:

  • Python 2.7.5,不支持Python3,此处有坑,不支持2.7.10以上版本,最好就用Python2.7.5,另外,如果path里有python3 ,要去掉。版本正确,还找不到python2的话,copy一份python.exe为python2.exe

  • Bison, Flex,已经在源码自带的gnuwin32\bin中

  • GPerf,需自行安装

  • Node.js version 8 or later (version 12 or later is recommended),就用12.x就好,太新的不要

  • OpenSSL 3.0.x 更高版本的不行

perl Configure VC-WIN64A --prefix=D:\Libraries\OpenSSL\3.0.9
nmake
nmake install

我自己写了个bat把环境变量都设置好,放在解压后的源码目录运行即可:

set _ROOT=%cd%
set PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
set PATH=%PATH%;C:\Python27
set PYTHONPATH=C:\Python27\DLLs
set PATH=%PATH%;D:\Tools\win_flex_bison
set PATH=%PATH%;D:\Tools\gperf\bin
set PATH=%PATH%;D:\Tools\nasm
set PATH=%PATH%;D:\Tools\ruby-1.9.3-p551-i386-mingw32\bin
set OPENSSL_PREFIX=D:\Libraries\OpenSSL\3.0.9
set PATH=%PATH%;%OPENSSL_PREFIX%\bin
set INCLUDE=%INCLUDE%;%OPENSSL_PREFIX%\include
set LIB=%LIB%;%OPENSSL_DIR%\lib
SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
set LLVM_INSTALL_DIR=C:\Program Files\LLVM

开始编译

必须使用x64 Native Tools Command Prompt for Visual Studio 2019运行以下命令 运行env.bat设置path后,使用以下配置:

configure -recheck-all -opensource -confirm-license -verbose -debug-and-release -webengine-proprietary-codecs -nomake tests -nomake examples -prefix D:\Libraries\Qt\5.15.9\msvc2019_x64 -mp -opengl dynamic -openssl-linked OPENSSL_PREFIX=D:\Libraries\OpenSSL\3.0.9 -I D:\Libraries\OpenSSL\3.0.9\include -L D:\Libraries\OpenSSL\3.0.9\lib OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32 -llibcrypto -llibssl"

如果之前编译过不支持ssl的版本,需要把文件删掉重新编译 使用jom代替nmake进行并行编译:

jom -j16

整个过程大约10小时,主要花在编译webengine上 在生成文档前,必须先安装,记得将OpenSSL的几个DLL复制到qt安装的路径的bin目录下

jom install

生成文档,此操作需先install后,再将qdoc的路径加入至PATH,可先单独运行一下qdoc看是否报错,如报错,需将libclang.dll复制到qt安装的路径的bin目录下

jom docs

安装文档

jom install_docs

整个过程很长很痛苦,主要是webengine要编译一个完整的chromium,太久了

More from this blog

解决QWidget用winId获取HWND而导致Qt程序无事件消息的问题

问题原因: 当对一个QWidget调用winId时,默认情况下,Qt会对该窗口进行Native化,从而导致如鼠标等事件被其它原生窗口接管,表现出来的现像就是窗口不响应任何事件 解决思路: 防止Qt窗口Native化 解决办法: 第一步,在创建QApplication对象之前设置: QApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); //注意:Qt::AA_NativeWindows受环境变量 QT_USE_NATI...

Jul 7, 20251 min read

解决因OpenGL渲染窗口高宽比导致图形变形

在 OpenGL 中,由于窗口的 宽高比(aspect ratio) 与绘制内容的坐标系统不一致,图像会出现拉伸、压缩等变形现象。为了解决这个问题,可根据窗口的大小调整投影矩阵,确保图像在视觉上保持原始比例。 先通过glViewPort调整视口 void resizeGL(int w, int h) { glViewport(0, 0, w, h); } 再根据窗口高宽比,计算出合适的投影矩阵,这样体现出来的样式,就是截掉了宽高比之外的内容,显示的内容不变形,正圆就是正圆,不会被拉伸成...

Jun 18, 20251 min read

雷的部落格威力缩小版

29 posts

雷的部落格威力缩小版