本文要点
- 面向 Windows 平台 Qt 6.8.3 源码构建。
- 覆盖 CMake、Ninja、Python、Node.js、OpenSSL 3 等工具链准备。
- 重点说明 Qt WebEngine 与 proprietary codecs 相关配置。
引言
在开发Qt应用程序时,使用预编译的Qt版本虽然方便,但有时我们需要从源码编译Qt,以获得特定功能支持、性能优化或定制化需求。文章将以Qt 6.8.3版本为例,详细介绍如何在Windows平台上使用Visual Studio工具链进行源码编译,并特别针对Qt WebEngine模块进行配置,以确保其支持专有音视频编解码器(如H.264和MP3),同时集成OpenSSL等常用第三方库。
本教程基于以下核心配置指令进行深度解析:
1 2
| .\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"
|
一、 环境与工具链准备
在开始编译之前,需要准备好所有必需的软件和工具链。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源码的父目录,例如:
四、 配置指令详解
核心配置指令如下,我们将逐一解析每个选项的含义:
1
| .\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选项,以清空历史配置缓存并重新开始配置:
1
| .\configure.bat -redo ... [其他配置选项]
|
五、 编译与安装过程
1. 执行配置
在VS Native Tools Command Prompt中,执行您的配置指令。配置过程可能需要几分钟。
1
| .\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选项来并行编译,以加快速度。
1
| cmake --build . --parallel
|
注意: 编译过程,尤其是Qt WebEngine模块,耗时极长(可能数小时甚至更久),请耐心等待。
3. 执行安装
编译完成后,执行安装命令将编译好的文件复制到-prefix指定的目录(D:\Qt\Qt6.8.3)。
至此,Qt 6.8.3的源码编译和安装过程完成。
六、 常见问题与解决方案
|
问题
|
原因
|
解决方案
|
| — | — | — |
|
编译WebEngine时内存不足
|
WebEngine编译需要大量内存(建议32GB+)。
|
增加系统内存或使用具有更多资源的机器。
|
|
路径过长导致编译失败
|
Windows文件路径限制,尤其影响WebEngine。
|
将Qt源码和编译目录放在根目录附近,确保路径短且不含空格。
|
|
找不到Python/Perl/CMake
|
环境变量未正确配置。
|
确保所有必需工具的安装路径已添加到PATH环境变量中。
|
|
OpenSSL配置错误
|
OPENSSL_ROOT_DIR指向的目录不正确。
|
检查路径是否正确,并确保该目录下包含include和lib等OpenSSL开发文件。
|
|
重新配置失败
|
历史配置缓存干扰。
|
使用-redo选项重新运行configure.bat。
|
七、编译错误解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [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开始编译
1 2
| ../../../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源码

1 2 3
| [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编译修复