Qt6.8.3 Windows平台源码编译

引言

在开发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,并依赖多种脚本语言和工具。

工具推荐版本获取方式作用
CMake3.22 或更高版本官方网站Qt 6的配置和构建工具。
Ninja最新版本官方网站推荐的构建工具,比jomnmake更快。
Python3.8 或更高版本 (64位)官方网站Qt WebEngine编译必需的脚本语言。
Perl5.x (64位)Strawberry Perl编译Qt核心模块和某些工具(如QDoc)所需。
libclang20.1.0下载地址编译Qt WebEngine和QDoc所需。
gnuwin32Qt预编译版本gperf,bison,flex下载地址QWebEngine编译需要

重要提示: 请确保上述所有工具的安装路径已添加到系统的PATH环境变量中,以便在命令行中直接调用,例如cmake.exeninja.exepython.exeperl.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中。

  1. 推荐版本: OpenSSL-3.5.4
  2. 下载OpenSSL源码或预编译库: 推荐下载适用于MSVC的预编译OpenSSL库,或自行编译。
  3. 设置OpenSSL路径: 确保您的OpenSSL安装路径与配置指令中的路径一致,例如:C:\Program Files\OpenSSL

html5lib:

  1. 使用pip3 install html5lib下载安装依赖,QWebEngine编译需要。

二、 获取Qt 6.8.3源码

  1. 下载源码包: 访问Qt官方下载页面,下载qt-everywhere-src-6.8.3.ziptar.xz源码包。
  2. 解压源码: 将源码解压到一个路径较短、不含空格的目录,例如 D:\Qt6

注意: 由于Windows路径的最大长度为被定义为260 个字符,路径过长或包含空格(如Program Files)可能导致编译失败,尤其是在编译Qt WebEngine时。错误警告如下:


三、 启动编译环境

使用Visual Studio的命令行工具来设置正确的编译环境:

  1. 将前面编译完成的SSL动态库复制到Qt源码解压目录下的qtbase\bin,否则会导致qmlcachegen.exe在编译过程中无法正常使用。

  2. 修改WebEngine模块的源代码,解决官方代码的bug,详见 七、编译错误解决方案-错误四部分

  3. 在Windows搜索栏中,搜索并打开 “x64 Native Tools Command Prompt for VS 2022”(或您使用的VS版本),右击以管理员身份运行

  4. 执行chcp 65001 切换至utf-8开始编译,否则编译webengine中python脚本会报错。

  5. 切换到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指向的目录不正确。检查路径是否正确,并确保该目录下包含includelib等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编译修复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值