引言
在开发Qt应用程序时,使用预编译的Qt版本虽然方便,但有时我们需要从源码编译Qt,以获得特定功能支持、性能优化或定制化需求。文章将以Qt 6.8.3版本为例,详细介绍如何在Windows平台上使用Visual Studio工具链进行源码编译,并特别针对Qt WebEngine模块进行配置,以确保其支持专有音视频编解码器(如H.264和MP3),同时集成OpenSSL等常用第三方库。
本教程基于以下核心配置指令进行深度解析:
.\configure.bat -prefix "D:\Qt\Qt6.8.3" -shared -confirm-license -opensource -verbose -debug-and-release -make examples -qt-zlib -qt-libpng -qt-libjpeg -qt-tiff -qt-webp -webengine-proprietary-codecs -openssl-linked -- -D OPENSSL_ROOT_DIR="C:\Program Files\OpenSSL"
# 重新配置追加 -redo 清空历史配置缓存
一、 环境与工具链准备
在开始编译之前,需要准备好所有必需的软件和工具链。Qt 6的编译依赖于CMake构建系统与ninja工具。
1. 操作系统与编译器
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| 操作系统 | Windows 10/11 (64位) | 建议使用较新版本。 |
| 编译器 | Visual Studio 2022 (MSVC) | 推荐使用MSVC 2022,需安装“使用C++的桌面开发”工作负载,并确保包含最新的Windows SDK (如10.0.17763或更高)。 |
| 内存磁盘 | 至少16GB RAM (推荐32GB以上,尤其是编译WebEngine时);100GB以上空闲磁盘空间。 | Qt WebEngine编译过程资源消耗巨大。 |

2. 必需的构建工具
Qt 6的构建系统基于CMake,并依赖多种脚本语言和工具。
| 工具 | 推荐版本 | 获取方式 | 作用 |
|---|---|---|---|
| CMake | 3.22 或更高版本 | 官方网站 | Qt 6的配置和构建工具。 |
| Ninja | 最新版本 | 官方网站 | 推荐的构建工具,比jom或nmake更快。 |
| Python | 3.8 或更高版本 (64位) | 官方网站 | Qt WebEngine编译必需的脚本语言。 |
| Perl | 5.x (64位) | Strawberry Perl | 编译Qt核心模块和某些工具(如QDoc)所需。 |
| libclang | 20.1.0 | 下载地址 | 编译Qt WebEngine和QDoc所需。 |
| gnuwin32 | Qt预编译版本 | gperf,bison,flex下载地址 | QWebEngine编译需要 |
重要提示: 请确保上述所有工具的安装路径已添加到系统的PATH环境变量中,以便在命令行中直接调用,例如cmake.exe、ninja.exe、python.exe和perl.exe。
本次编译相关工具版本如下:
- cmake version 3.31.9
- ninja 1.12.0
- Python 3.13.5
- Perl v5.40.2
- libclang 20.1.0
- gnuwin32
官方文档构建要求如下:

3. 第三方库准备 (OpenSSL3、html5lib)
OpenSSL3:
由于配置指令中使用了-openssl-linked,这意味着您需要提供OpenSSL的开发库,并将其链接到Qt中。
- 推荐版本: OpenSSL-3.5.4
- 下载OpenSSL源码或预编译库: 推荐下载适用于MSVC的预编译OpenSSL库,或自行编译。
- 设置OpenSSL路径: 确保您的OpenSSL安装路径与配置指令中的路径一致,例如:
C:\Program Files\OpenSSL。
html5lib:
- 使用
pip3 install html5lib下载安装依赖,QWebEngine编译需要。
二、 获取Qt 6.8.3源码
- 下载源码包: 访问Qt官方下载页面,下载
qt-everywhere-src-6.8.3.zip或tar.xz源码包。 - 解压源码: 将源码解压到一个路径较短、不含空格的目录,例如
D:\Qt6。
注意: 由于Windows路径的最大长度为被定义为260 个字符,路径过长或包含空格(如Program Files)可能导致编译失败,尤其是在编译Qt WebEngine时。错误警告如下:

三、 启动编译环境
使用Visual Studio的命令行工具来设置正确的编译环境:
-
将前面编译完成的SSL动态库复制到Qt源码解压目录下的
qtbase\bin,否则会导致qmlcachegen.exe在编译过程中无法正常使用。

-
修改WebEngine模块的源代码,解决官方代码的bug,详见
七、编译错误解决方案-错误四部分。 -
在Windows搜索栏中,搜索并打开 “x64 Native Tools Command Prompt for VS 2022”(或您使用的VS版本),右击
以管理员身份运行。 -
执行
chcp 65001切换至utf-8开始编译,否则编译webengine中python脚本会报错。 -
切换到Qt源码的父目录,例如:
D: cd D:\Qt6
四、 配置指令详解
核心配置指令如下,我们将逐一解析每个选项的含义:
.\configure.bat -prefix "D:\Qt\Qt6.8.3" -shared -confirm-license -opensource -verbose -debug-and-release -make examples -qt-zlib -qt-libpng -qt-libjpeg -qt-tiff -qt-webp -webengine-proprietary-codecs -openssl-linked -- -D OPENSSL_ROOT_DIR="C:\Program Files\OpenSSL"
| 选项 | 含义 | 备注 |
|---|---|---|
-prefix "D:\Qt\Qt6.8.3" | 指定Qt的安装路径。 | 编译完成后,所有文件将安装到此目录。 |
-shared | 构建动态链接库(DLL)。 | 默认选项,与-static相对。 |
-confirm-license | 自动确认许可证。 | 适用于-opensource或-commercial。 |
-opensource | 使用开源许可证进行构建。 | 必须与-confirm-license一起使用。 |
-verbose | 显示详细的配置和构建信息。 | 有助于调试配置问题。 |
-debug-and-release | 同时构建Debug和Release版本。 | 推荐用于开发环境。 |
-make examples | 编译Qt自带的示例程序。 | 方便学习和测试。 |
-qt-zlib | 使用Qt自带的zlib库。 | 避免外部依赖冲突。 |
-qt-libpng | 使用Qt自带的libpng库。 | 避免外部依赖冲突。 |
-qt-libjpeg | 使用Qt自带的libjpeg库。 | 避免外部依赖冲突。 |
-qt-tiff | 使用Qt自带的TIFF库。 | 避免外部依赖冲突。 |
-qt-webp | 使用Qt自带的WebP库。 | 启用WebP图像格式支持。 |
-webengine-proprietary-codecs | 启用WebEngine专有音视频编解码器。 | 确保WebEngine支持H.264、MP3等格式的音视频播放。 |
-openssl-linked | 链接OpenSSL库。 | 确保Qt的网络模块具备SSL/TLS支持。 |
-- | 分隔符,用于将后续参数传递给底层的CMake。 | |
-D OPENSSL_ROOT_DIR="..." | 通过CMake变量指定OpenSSL的根目录。 | 确保CMake能找到OpenSSL的头文件和库文件。 |
重新配置提示:
如果您需要修改配置并重新运行configure.bat,建议在指令中追加-redo选项,以清空历史配置缓存并重新开始配置:
.\configure.bat -redo ... [其他配置选项]
五、 编译与安装过程
1. 执行配置
在VS Native Tools Command Prompt中,执行您的配置指令。配置过程可能需要几分钟。
.\configure.bat -prefix "D:\Qt\Qt6.8.3" -shared -confirm-license -opensource -verbose -debug-and-release -make examples -qt-zlib -qt-libpng -qt-libjpeg -qt-tiff -qt-webp -webengine-proprietary-codecs -openssl-linked -- -D OPENSSL_ROOT_DIR="C:\Program Files\OpenSSL"
配置成功后,命令行会提示您运行构建命令。
2. 执行编译
使用cmake --build命令和--parallel选项来并行编译,以加快速度。
cmake --build . --parallel
注意: 编译过程,尤其是Qt WebEngine模块,耗时极长(可能数小时甚至更久),请耐心等待。
3. 执行安装
编译完成后,执行安装命令将编译好的文件复制到-prefix指定的目录(D:\Qt\Qt6.8.3)。
ninja install
至此,Qt 6.8.3的源码编译和安装过程完成。
六、 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 编译WebEngine时内存不足 | WebEngine编译需要大量内存(建议32GB+)。 | 增加系统内存或使用具有更多资源的机器。 |
| 路径过长导致编译失败 | Windows文件路径限制,尤其影响WebEngine。 | 将Qt源码和编译目录放在根目录附近,确保路径短且不含空格。 |
| 找不到Python/Perl/CMake | 环境变量未正确配置。 | 确保所有必需工具的安装路径已添加到PATH环境变量中。 |
| OpenSSL配置错误 | OPENSSL_ROOT_DIR指向的目录不正确。 | 检查路径是否正确,并确保该目录下包含include和lib等OpenSSL开发文件。 |
| 重新配置失败 | 历史配置缓存干扰。 | 使用-redo选项重新运行configure.bat。 |
七、编译错误解决方案
- 错误一
[11/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_qmlcache_loader.cpp
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_qmlcache_loader.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_qmlcache_loader.cpp
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --resource-name qmlcache_qtvkbstylesplugin -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_qmlcache_loader.cpp @D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_qml_loader_file_list.rsp"
[12/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/KeyboardStyle.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyboardStyle_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/KeyboardStyle.qml"
[13/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/KeyIcon.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyIcon_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/KeyIcon.qml"
[14/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/KeyPanel.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_KeyPanel_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/KeyPanel.qml"
[15/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/SelectionListItem.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_SelectionListItem_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/SelectionListItem.qml"
[16/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/TraceInputKeyPanel.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceInputKeyPanel_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/TraceInputKeyPanel.qml"
[17/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp, .rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp.aotstats
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp.aotstats D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp.aotstats
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/TraceCanvas.qml -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceCanvas_qml.cpp D:/qt6/qtvirtualkeyboard/src/styles/TraceCanvas.qml"
[18/52957] Generating .rcc/qmlcache/qtvkbstylesplugin_TraceUtils_js.cpp
FAILED: qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceUtils_js.cpp D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceUtils_js.cpp
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtvirtualkeyboard\src\styles && "D:\Program Files\CMake\bin\cmake.exe" -E make_directory D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/qmlcachegen.exe --bare --resource-path /qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/TraceUtils.js -I D:/qt6/qtbase/qml/ -I D:/qt6/qtbase/qml -I D:/qt6/qtbase/qml -i D:/qt6/qtbase/qml/QtQuick/VirtualKeyboard/Styles/qmldir --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qmake_QtQuick_VirtualKeyboard_Styles.qrc --resource D:/qt6/qtvirtualkeyboard/src/styles/.qt/rcc/qtvkbstylesplugin_raw_qml_0.qrc --dump-aot-stats --module-id=QtQuick.VirtualKeyboard.Styles(qtvkbstylesplugin) -o D:/qt6/qtvirtualkeyboard/src/styles/.rcc/qmlcache/qtvkbstylesplugin_TraceUtils_js.cpp D:/qt6/qtvirtualkeyboard/src/styles/TraceUtils.js"
[31/52957] Building CXX object qtdeclarative\src\quicklayouts\CMakeFiles\QuickLayouts.dir\Release\cmake_pch.cxx.obj
FAILED: qtwebengine/src/core/Release/AMD64/QtWebEngineCore.stamp qtwebengine/src/core/Release/AMD64/obj/tools/v8_context_snapshot/v8_context_snapshot.stamp qtwebengine/src/core/Release/AMD64/QtWebEngineCore D:/qt6/qtwebengine/src/core/Release/AMD64/QtWebEngineCore.stamp D:/qt6/qtwebengine/src/core/Release/AMD64/obj/tools/v8_context_snapshot/v8_context_snapshot.stamp D:/qt6/qtwebengine/src/core/Release/AMD64/QtWebEngineCore
C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtwebengine\src\core && D:\Strawberry\c\bin\ninja.exe -C D:/qt6/qtwebengine/src/core/Release/AMD64 QtWebEngineCore"
ninja: build stopped: subcommand failed.

解决方案:将ssl动态链接库拷贝到Qt源码解压目录下的qtbase\bin
- 错误二

解决方案:执行chcp 65001 切换至utf-8开始编译
-
错误三

解决方案:pip3 install html5lib -
错误四
../../../3rdparty/chromium/v8\src/heap/cppgc/marking-state.h(345): error C2352: “cppgc::internal::MarkingStateBase::MarkNoPush”: 调用非静态成员函数需要一个对象
../../../3rdparty/chromium/v8\src/heap/cppgc/marking-state.h(84): note: 参见“cppgc::internal::MarkingStateBase::MarkNoPush”的声明

解决方案:(chromium代码存在bug),官方修复地址。具体操作为修改qtwebengine\src\3rdparty\chromium\v8\src\heap\cppgc\marking-state.h源码

- 错误五
[69/1134] Linking CXX shared library qtactiveqt\examples\activeqt\wrapper\Release\wrapperax.dll
FAILED: qtactiveqt/examples/activeqt/wrapper/Release/wrapperax.dll qtactiveqt/examples/activeqt/wrapper/Release/wrapperax.lib
C:\WINDOWS\system32\cmd.exe /C "cd . && "D:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --msvc-ver=1944 --intdir=qtactiveqt\examples\activeqt\wrapper\CMakeFiles\wrapperax.dir\Release --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests -- "D:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\link.exe" /nologo qtactiveqt\examples\activeqt\wrapper\CMakeFiles\wrapperax.dir\Release\wrapperax_autogen\mocs_compilation_Release.cpp.obj qtactiveqt\examples\activeqt\wrapper\CMakeFiles\wrapperax.dir\Release\main.cpp.obj qtactiveqt\examples\activeqt\wrapper\CMakeFiles\wrapperax.dir\Release\wrapperax.rc.res /out:qtactiveqt\examples\activeqt\wrapper\Release\wrapperax.dll /implib:qtactiveqt\examples\activeqt\wrapper\Release\wrapperax.lib /pdb:qtactiveqt\examples\activeqt\wrapper\Release\wrapperax.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /DEF:qtactiveqt\examples\activeqt\wrapper\wrapperax.def qtbase\lib\Qt6AxServer.lib shell32.lib qtbase\lib\Qt6AxBase.lib advapi32.lib gdi32.lib ole32.lib oleaut32.lib user32.lib qtbase\lib\Qt6Widgets.lib qtbase\lib\Qt6Gui.lib d3d11.lib dxgi.lib dxguid.lib d3d12.lib qtbase\lib\Qt6Core.lib mpr.lib userenv.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && C:\WINDOWS\system32\cmd.exe /C "cd /D D:\qt6\qtactiveqt\examples\activeqt\wrapper && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/idc.exe D:/qt6/qtactiveqt/examples/activeqt/wrapper/Release/wrapperax.dll /idl D:/qt6/qtactiveqt/examples/activeqt/wrapper/wrapperaxRelease.idl -version 1.0 && D:\qt6\.qt\bin\qt_setup_tool_path.bat midl D:/qt6/qtactiveqt/examples/activeqt/wrapper/wrapperaxRelease.idl /nologo /tlb D:/qt6/qtactiveqt/examples/activeqt/wrapper/wrapperaxRelease.tlb && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/idc.exe D:/qt6/qtactiveqt/examples/activeqt/wrapper/Release/wrapperax.dll /tlb D:/qt6/qtactiveqt/examples/activeqt/wrapper/wrapperaxRelease.tlb && D:\qt6\.qt\bin\qt_setup_tool_path.bat D:/qt6/qtbase/bin/idc.exe D:/qt6/qtactiveqt/examples/activeqt/wrapper/Release/wrapperax.dll /regserver""

解决方案:权限不足,以管理员身份执行x64 Native Tools Command Prompt for VS 2022
参考文献
Qt6编译选项
Qt6Windows编译教程
QWebEngine编译教程
QWebEngine编译选项
gnu-win32
libclang
QDoc编译
Qt6编译教程
Qt6WebEngine编译修复
656

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



