Qt5源码编译-Windows平台
本文将介绍在 Windows 11 系统上使用 Visual Studio 2022 编译 Qt 5.15.17 源码的整个过程。
环境准备
在开始编译之前,请确保你已经安装并配置好以下软件和工具:
-
Visual Studio 2022编译器: 安装时请确保勾选 “使用 C++ 的桌面开发” 工作负荷。
-

-
Qt源码: 从 Qt 官方归档下载源码压缩包Qt5.15.17,下载源码压缩包后并解压到一个不包含中文和空格的路径下

-
Clang工具: libclang 用于编译Qt文档模块。
-
python2.7 QtWebEngine 模块需要 Python 2.7 版本,请从 Python 官网下载并安装。
-
Perl 推荐使用 Strawberry Perl
-
OpenSSL 从 OpenSSL 官网下载并编译安装 OpenSSL v1.1.1系列的版本,例如 Win64 OpenSSL v1.1.1w。具体可参考本博客中SSL编译教程
-
Node.js 推荐12及以后版本可以从 Node.js 官网下载
配置环境变量
为了让编译脚本能够找到所需的工具,你需要将以下目录添加到系统的 PATH 环境变量中:
-
python、Perl、Node.js工具安装时注意勾选添加到环境变量
-
libclang工具下载解压后,将其bin目录加入到系统环境变量中。
-
ANGLE 依赖于 GnuWin32 和 Win flex-bison 项目中的以下额外工具,这些工具位于qt源码中 gnuwin32/bin 文件夹中,我们需要将其加入到环境变量中:


注意:请根据你的实际安装路径进行调整。
编译Qt源码
SSL配置
如果您自行编译 Qt,可以通过设置 -openssl / -openssl-runtime 或 -openssl-linked 配置标志来配置 Qt 使用 OpenSSL 的方式。
如果在常规编译器包含目录和库目录中未找到 OpenSSL,可以设置 OPENSSL_PREFIX、OPENSSL_INCDIR 和 OPENSSL_LIBDIR 配置参数。如果设置了 OPENSSL_PREFIX,则 OPENSSL_INCDIR 默认为 OPENSSL_PREFIX/include,OPENSSL_LIBDIR 默认为 OPENSSL_PREFIX/lib。
可以通过设置 OPENSSL_LIBS、OPENSSL_LIBS_DEBUG 和 OPENSSL_LIBS_RELEASE 配置参数来调整实际要链接的库。
- 要在运行时加载 OpenSSL,请设置 -openssl-runtime 配置参数。 Qt 会尝试在编译器的默认包含路径中查找 openssl/ssl.h 和 openssl/opensslv.h。您可以通过设置 OPENSSL_INCDIR 来指定额外的包含目录。
这种方法在后期使用与编译自己开发的软件中,如果使用到网络模块,没有在软件中引入ssl相关动态链接库,软件依然可以正常启动。
configure -openssl-runtime OPENSSL_INCDIR="C:\Program Files\OpenSSL-Win64\include"
- 要将 Qt Network 与 OpenSSL 库链接,请设置 -openssl-linked 配置参数。使用 OPENSSL_PREFIX 变量可以让 Qt 正确定位并根据你的 OpenSSL 安装进行构建:
这种方法在后期使用与编译自己开发的软件中,如果使用到网络模块,没有在软件中引入ssl相关动态链接库,软件依然无法正常启动,必须将ssl相关链接库复制粘贴到项目的编译目录中。
configure -openssl-linked OPENSSL_PREFIX="C:\Program Files\OpenSSL-Win64"
- 要将 Qt Network 链接到 OpenSSL 库的静态版本,请设置 -openssl-linked 参数,并设置 OPENSSL_PREFIX、OPENSSL_INCDIR 和 OPENSSL_LIBDIR。此外,您可能需要设置 OPENSSL_LIBS、OPENSSL_LIBS_DEBUG 和 OPENSSL_LIBS_RELEASE 配置参数,以便 Qt 能够正确链接到您构建的 OpenSSL 库的静态版本。
set OPENSSL_DIR=C:\Program Files\OpenSSL-Win64
configure -openssl-linked OPENSSL_INCDIR="%OPENSSL_DIR%\include" OPENSSL_LIBDIR="%OPENSSL_DIR%\lib\VC\static" OPENSSL_LIBS="-lWs2_32 -lGdi32 -lAdvapi32 -lCrypt32 -lUser32" OPENSSL_LIBS_DEBUG="-llibssl64MDd -llibcrypto64MDd" OPENSSL_LIBS_RELEASE="-llibssl64MD -llibcrypto64MD"
在确定好ssl的链接方式后可以正式开始编译qt源码,本文采用第一种方式进行编译。
- 打开命令行工具
在Windows搜索中找到X64 Native Tools Command Prompt for VS2022

2. 切换到qt源码目录

3. 配置编译选项
使用 configure 命令配置编译选项。以下是一个推荐的配置示例:
.\configure.bat -prefix "D:\Qt\Qt5.15.17" -shared -confirm-license -opensource -debug-and-release -optimized-tools -sql-sqlite -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -qt-tiff -qt-webp -platform win32-msvc -openssl-runtime OPENSSL_INCDIR="E:\openssl\include" -mp -recheck-all
常用配置选项说明:
- -prefix “D:\Qt\Qt5.15.17”:指定 Qt 的安装目录。
- -debug-and-release:同时编译 Debug 和 Release 版本的库。
- -opensource:使用开源版本的 Qt。
- -confirm-license:自动确认许可协议。
- -shared:编译为动态链接库(DLL)。如果需要静态库,请使用 -static。
- -platform win32-msvc:指定目标平台和编译器。
- -nomake examples:不编译示例。
- -nomake tests:不编译测试。
- -skip qtwebengine:跳过 QtWebEngine 模块的编译。
- -openssl-runtime “OPENSSL_INCDIR=D:\openssl\include” “OPENSSL_LIBDIR=D:\openssl\lib”:指定 OpenSSL的头文件和库文件路径。
- 执行编译源码
nmake
注意:编译过程会花费较长时间,请耐心等待。
- 安装Qt
nmake install
- 编译Qt文档
nmake docs
- 安装Qt文档
nmake install_docs
2万+

被折叠的 条评论
为什么被折叠?



