Qt6.8.3 Windows平台源码编译

Windows平台下基于VS2019的QT6.4.2静态编译与动态链接实战指南 本文详细介绍了在Windows平台下使用VS2019进行QT6.4.2静态编译与动态链接的实战指南。从环境准备、源码获取到编译优化与调试技巧,全面解析了QT6在Windows下的开发部署流程,帮助开发者高效完成项目构建。 阅读详情
AI摘要

本文详细介绍了在Windows平台上使用Visual Studio工具链编译Qt 6.8.3源码的过程,重点涵盖环境搭建、CMake与ninja构建工具配置、OpenSSL和html5lib等第三方库集成,以及Qt WebEngine模块的定制化编译。文中还提供了常见编译错误及其解决方案,包括编码设置、路径限制和权限问题处理。

引言

在开发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最新版本官方网站推荐的构建工具,比jom或nmake更快。
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.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中。

  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.zip或tar.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指向的目录不正确。检查路径是否正确,并确保该目录下包含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编译修复

QT6源码编译全过程(windows环境下使用VS2019) Windows平台基于Visual Studio2019编译QT6.2.2源代码的全过程记录于分享 阅读详情

相关推荐

Qt 6.8.3 MSVC 2022 32-bit

必须确保 Visual Studio 2022 支持 32 位编译。如果没有,点击 Add → MSVC → 选择 x86。会自动利用所有 CPU 核心并行编译,加快速度。所有命令都正常显示版本号,说明环境准备就绪。应都能找到对应的路径。(包含 designer 等工具)。或重新打开命令行使 PATH 生效。(或类似包含 x86 的选项)中包含了你的项目需要的。Qt 版本:选择刚添加的。安装完成后,产物位于。依赖 Python。

m0_68490248的博客 362

QT6源码编译全过程

截至笔者编写此篇博客的时候,QT6系列已经发布了6.2.3版本,笔者也是于近期亲身编译了QT6.2.2的源码,开始着手熟悉体验新版本的QT了哦!顺便将笔者的编译过程整理记录下来,跟大家进行分享、交流。QT作为一个跨平台的界面开发平台,经过了历史长河的洗礼以及一代代Qt开发者的不断努力,其意义已经远远高于开发界面。1、解压Qt6.2.2源码,启动VS2019的64位命令行并切换至Qt6.2.2源码目录。(1)Visual Studio2019(笔者使用的企业版)(6)QT6.2.2源码 点击下载。

qqwangfan的专栏 3124

Qt实现静态编译(Windows平台)

官网下载的Qt安装后默认只能动态编译,但是有时候我们又需要静态编译为单文件可执行exe文件。解决办法就是编译Qt的静态编译套件工具源码。 我把自己编译好的套件也上传分享了,若想节省时间不自己编译也可以在文末的下载链接下载我自己编译好了的版本直接配置(直接参考第三步配置)。 1,准备 安装好Qt Creator Qt源码清华大学镜像站 Visual Studio Community 最新版 下载地址 Python2.7 下载地址 Perl下载地址 Ruby下载地址 jom多线程编译(非...

yanhanhui1的博客 9709

windows下载qt6.8.3以及编译qgc5.0.3

windows下qt6.8.3配置qgc5.0.3的编译环境

nbutz的博客 7

QT 源码编译--windows

1.编译的前的基础了解 目标platforms(平台),编译静态库或者动态库,skip某个功能模块等选项 2.源码下载 两种方式:1.直接下载,下载地址:http://download.qt.io/archive/qt/,2.git clone Qt源码,仓库地址:https://code.qt.io/qt/qt5.git。推荐使用git克隆的方式,这样在编译生成目标库时,你可以通过git清...

hulingerlin的博客 2万+

Qt6.x源码静态编译

Qt6.0 源码 静态编译

swift19221的专栏 1198

JQTools部署与编译指南:跨平台构建Qt工具包的完整流程

JQTools是一款基于Qt/QML/C++开发的开源多功能工具箱,集成了文本处理、加密计算、图片优化、二维码生成与Qt辅助等常用功能。无论您是开发新手还是经验丰富的程序员,这份完整的部署与编译指南将帮助您快速上手这个强大的跨平台工具集。😊 ## 📋 为什么选择JQTools? JQTools提供了一站式的开发辅助解决方案,包含五大核心功能模块: | 功能类别 | 主要工具 | 应用场景

gitblog_00179的博客 954

Windows下QT6 WebEngine编译指南:从环境配置到成功编译的完整流程

本文提供了在Windows系统下编译QT6 WebEngine模块的完整实战指南。文章深入剖析了编译环境的底层逻辑,详细讲解了Python环境、GNU工具链等核心依赖的配置技巧,并逐步指导从源码准备、配置参数解析到最终成功编译与安装的全过程,帮助开发者攻克这一复杂的技术挑战。

h3i4j的博客 1108

VNote 3.18.0重大升级:全面拥抱Qt6框架的终极指南

VNote 3.18.0版本带来了里程碑式的更新,全面迁移至Qt6框架,为这款备受欢迎的Markdown笔记平台注入了新的活力。作为一款基于Qt的开源笔记应用,VNote专注于提供卓越的Markdown编辑体验,此次升级不仅提升了性能表现,还带来了更稳定的运行环境和更丰富的功能扩展。 ## ✨ Qt6框架带来的核心优势 Qt6作为跨平台应用开发的强大框架,为VNote带来了多方面的提升: -

gitblog_01189的博客 1054

Qt6.8.3 Windows开发环境下载安装配置全攻略|手把手教你VS2022+Qt6.8环境搭建|2025年零基础逆袭 | 附避坑清单&效率工具包

Qt6.8.3 安装;Qt Create 16.0.0(Community) 安装;面向Windows平台C++开发者,尤其是需在Visual Studio 2022中配置Qt6.8环境的零基础用户。涵盖安装优化、环境调试、实战避坑及效率工具包,助你3小时内从环境搭建到项目跑通,规避90%新手常见错误。

深漂3年的精致小镁铝 9096

Qt MQTT 模块安装简明教程(Windows + Qt 6.x.x)

本文提供了在Windows系统下为Qt 6.x.x安装MQTT模块的简明教程。以Qt 6.8.3为例,详细说明了从GitHub获取源码(需与Qt版本严格匹配)、使用Qt Creator编译构建、以及将生成文件复制到Qt安装目录的关键步骤。教程包含文件路径配置图示和.pro/CMake项目配置示例,最后通过包含头文件验证安装成功。该方案适用于所有Qt 6.x.x版本,只需在git checkout步骤修改对应版本号即可。

daimiliu1079的博客 530

Qt6.8.3源码编译(MSVC)- 动态库&静态库

下载路径:https://mirrors.nju.edu.cn/qt/archive/qt/6.8/6.8.3/single/qt-everywhere-src-6.8.3.tar.xz。安装完成后,在 E:\Library\MSVC_2022\x64_Shared_MD 目录下生成动态库文件(.dll)、调试符号(.pdb)、头文件等。安装完成后,在 E:\Library\MSVC_2022\x64_Static_Release_MT 目录下生成静态库文件(.lib)。

weixin_42211731的博客 1661

Qt6.8.3静态库,使用MinGW64 GCC13.1.0编译

Qt6.8.3静态库,使用MinGW64 GCC13.1.0编译 编译器mingw1310_64:13.1.0-202407240918mingw1310.7z (Qt官方默认编译器版本) https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_mingw1310/qt.tools.win64_mingw1310/13.1.0-202407240918mingw1310.7z

windows下使用MingW-w64 编译 Qt4.8.6源码,生成64位QT库

技术支持 [点我获取技术支持] 1. 安装mingw-w64 具体安装教程,可以参考:https://blog.csdn.net/wo198711203217/article/details/105032057 安装时记得选择x86_64的。 2. 下载QT4.8.6源码包 官网下载地址:http://download.qt.io/archive/qt/ 在里边找到4.8.6对应的源码包。 我这里...

技术成就梦想,梦想成就未来。If you try hard enough, it can be. 4674

STM32+4G模块+MQTT协议:从零构建稳定可靠的物联网通讯链路

本文详细介绍了如何利用STM32、4G模块和MQTT协议构建稳定可靠的物联网通讯链路。通过硬件选型、AT指令配置和MQTT连接实战,帮助开发者实现低功耗、高可靠性的数据传输,特别适合户外和移动场景应用。

weixin_29191081的博客 334

Windows Qt 6.5.x 源码编译

它可能已作为 Visual Studio 或 Qt 的组件安装。如果是这种情况,您可以跳过此步骤。如果您确实想要或需要安装 CMake,您可以从官网获取它Git - 下载软件包Perl 下载 - www.perl.orgIndex of /qt/archive/qt/6.5/6.5.3/single/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror解压到一个合适的目录。例如:D:\wireshark\qt-everywhere-src-6.5.3。

dlz0836的博客 1415

从转发时钟到嵌入式时钟:CDR、CTLE与DFE在高速串行链路中的协同演进

本文深入探讨了高速串行链路中CDR、CTLE与DFE技术的协同演进。从转发时钟到嵌入式时钟的转变,详细分析了CDR的工作原理与实现架构,以及CTLE和DFE在信道损耗补偿和ISI干扰消除中的关键作用。通过实战案例展示了这些技术在28Gbps至112Gbps SerDes设计中的优化策略与性能提升。

weixin_42539414的博客 297

源码编译 Qt 6.2

Qt 6.2 源码构建 (动态库和静态库) Qt 6.2.0 源码构建,win10、ubuntu、Mac平台下的动态库版本、静态库版本.

他的博客 7991

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 840

使用LoRa远程控制路灯(PWM调光以及LoRaWAN单播、组播、广播)

PWM调光 1、使用有pwm波输出的引脚,本例子使用timer0,PA0引脚; 2、由于timer时钟的原因,mcu不能进入休眠; 3、主控使用EFM32,代码实现如下: #define MAX_PULSE (CPU_FREQ/1000-1) #define UNIT_PULSE MAX_PULSE/100 //单位脉宽 void pwminit(void) { ...

freemote的博客 2944

Windows环境下QT源码下载及编译

说明:以下内容部分来自腾讯元宝。

felicity_one的博客 2729

深入大模型-19-Windows10中安装OpenClaw-CN配置接入智谱免费大模型

OpenClaw CN (中国社区版) 是 OpenClaw 的本地化维护版本,针对国内网络环境进行了深度优化,源码级原生支持 DeepSeek/Qwen 等国产大模型,致力于让中国开发者拥有最顺滑的 Agent 开发体验。

qq_20466211的博客 771

Qt 5.15的源码编译(Windows)

本文主要分享如何手动源码编译Qt 5.15,分享一些注意事项和经验,为节省更多人的时间。环境是:Qt5.15 + windows + msys2(mingw)

MrTsai_cpp的博客 1万+

Sigrity System SI Parallel Bus Analysis模式进行DDR3仿真分析操作指导-单个颗粒

Default Strobe Offset:DQS默认偏移时间,自动填充为0.5ns,即DQS默认偏移1/2UI,DQS滞后于DQ 1/2UI,让建立保持时间均分。WLO:写平衡偏移的数值,DataL是0ps,DataU是500ps,是根据WLOSkew自动定义的,可以认为是WLOSkew取整,也可以根据需要手动调整数值。注意AddCmd的UI=T,这里的Data Rate仍然是DQ的速率,并不是地址线的速率,地址线的速率=1/UI=1/2ns=0.5Gbps。

weixin_54787054的博客 367

YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测

在YOLO26中如何使用:iAFF加入Neck替代Concat;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 272
上一篇: Weston桌面系统截屏
二月上
博客等级 码龄2年 48粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值