Qt5源码编译-Windows平台

Qt5源码编译-Windows平台

本文将介绍在 Windows 11 系统上使用 Visual Studio 2022 编译 Qt 5.15.17 源码的整个过程。

环境准备

在开始编译之前,请确保你已经安装并配置好以下软件和工具:

  • Visual Studio 2022编译器: 安装时请确保勾选 “使用 C++ 的桌面开发” 工作负荷。

  • VS2022安装

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

  • 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 配置参数来调整实际要链接的库。

  1. 要在运行时加载 OpenSSL,请设置 -openssl-runtime 配置参数。 Qt 会尝试在编译器的默认包含路径中查找 openssl/ssl.h 和 openssl/opensslv.h。您可以通过设置 OPENSSL_INCDIR 来指定额外的包含目录。
    这种方法在后期使用与编译自己开发的软件中,如果使用到网络模块,没有在软件中引入ssl相关动态链接库,软件依然可以正常启动。
configure -openssl-runtime OPENSSL_INCDIR="C:\Program Files\OpenSSL-Win64\include"
  1. 要将 Qt Network 与 OpenSSL 库链接,请设置 -openssl-linked 配置参数。使用 OPENSSL_PREFIX 变量可以让 Qt 正确定位并根据你的 OpenSSL 安装进行构建:
    这种方法在后期使用与编译自己开发的软件中,如果使用到网络模块,没有在软件中引入ssl相关动态链接库,软件依然无法正常启动,必须将ssl相关链接库复制粘贴到项目的编译目录中。
configure -openssl-linked OPENSSL_PREFIX="C:\Program Files\OpenSSL-Win64"
  1. 要将 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源码,本文采用第一种方式进行编译。

  1. 打开命令行工具

在Windows搜索中找到X64 Native Tools Command Prompt for VS2022
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的头文件和库文件路径。
  1. 执行编译源码
nmake

注意:编译过程会花费较长时间,请耐心等待。

  1. 安装Qt
nmake install
  1. 编译Qt文档
nmake docs
  1. 安装Qt文档
nmake install_docs

参考链接

libclang编译qt文档模块版本问题

Qt官方编译教程-编译命令

Qt官方编译教程-环境配置

Qt官方编译教程-Web模块

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值