3

我试图构建 Qt5.5 以便能够在 Windows XP 上运行 QtWebEngine。这是我设置环境的bat文件:

REM Set up \Microsoft Visual Studio 2013, where <arch> is \c amd64, \c x86, etc.
CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
SET _ROOT=%CD%
SET PATH=%_ROOT%\qtbase\bin;C:\Perl\bin;%_ROOT%\gnuwin32\bin;C:\devtools\Bitnami\rubystack-2.0.0-26\ruby\bin;C:\Python27;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET QMAKESPEC=win32-msvc2013
SET _ROOT=

bat 文件来配置构建

configure -debug-and-release -nomake examples -opensource -nomake tests -target xp -prefix c:\qt5\5.5\msvc2013-winxp

构建成功,但我无法使用 QtWebEngine 运行任何示例在此处输入图像描述

是否可以为 WinXP 目标构建 QtWebEngine 或者它与 WinXP 不兼容?

4

3 回答 3

7

Qt WebEngine 5.5.0 for Windows XP 兼容性构​​建步骤

正式发布的问题

Qt 5.5.0 官方发布的 qwebengine 模块与 Windows XP 应用程序不兼容,即使您强制您的项目二进制文件与 XP 兼容性编译/链接设置/标志(QT DLL 可能仍然不兼容)并且您可以在 XP 下执行您的 exe 二进制文件,无论如何,您都不能使用 qwebengine 模块-只是因为 QtWebEnbineProcess.exe 被构建为 Windows XP 的无效 EXE。

要使 Qt WebEngine 5.5.0 可以在 winXP 上运行,您必须使用附加选项方式重建 Qt 模块(正如所说的官方 Qt 版本根本不兼容,您必须构建新的模块)。在 Windows 下 QtWebEngine 只能在 Visual Studio 2013 中构建,无法在其他版本的 Visual Studio 中构建 chromium 代码。通常Windows下的Qt和Chromium可以使用OpenGL或/和ANGLE项目(使用Direc3D9Ex或Direct3D11)支持硬件图形操作,如果你为WinXP构建你别无选择,你必须使用OpenGL(这是最糟糕的选择,如果您有选择),因为 Direct3D9Ex/Direct3D11 只能从 Vista+ 安装。因此,请确保您已经为运行程序的机器安装了更新的图形驱动程序,

问题成因

任何问题都只是因为默认的 Visual C++ 2013 应用程序编译与 XP(C 运行时和 EXE 子系统)不兼容,但您仍然可以在 Visual C++ 2013 中更改和使用与 WinXP 兼容的运行时,此处描述:

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx

所以基本上你必须添加 Windows SDK7.1A 路径来包含、库和二进制文件,为 Qt 和 chromium 的每个 cl 编译器执行传递 /D_US​​ING_V120_SDK71_ 并在构建你的链接器调用时传递 /SUBSYSTEM:WINDOWS,5.01 或 /SUBSYSTEM:CONSOLE,5.01项目和QtWebEngineProcess.exe,是不是很简单:)

构建要求:

  1. Visual C++ 2013(在我的情况下安装在标准位置:C:\Program Files (x86)\Microsoft Visual Studio 12.0)

  2. Windows SDK 7.1A - 最后一个与 Windows XP 兼容的 SDK,/D_US​​ING_V120_SDK71_ 强制使用它(在我的情况下,安装在标准位置:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A)

  3. 用于构建 chromium 的第 3 方工具:Git、Perl、Python、pscp.exe - 您必须在构建之前将它们的二进制文件添加到 PATH 环境变量。

  4. OpenGL ES SDK 使用 OpenGL ES 2.0 实现,我从 AMD 下载(在我的情况下下载到 D:\rzaba\qt\GLES_SDK)。

  5. Qt 5.5.0 源 - 解压到 D:\rzaba\qt\src-5.5.0

(我不能粘贴更多链接,因为我没有 2 分的声誉,天哪!:D)

构建过程

首先阅读这个:http ://doc.qt.io/qt-5/windows-building.html ,我们必须像那里一样这样做,但需要更多步骤才能兼容 XP 的构建。

现在,如果源代码已解压缩并安装了所有内容,则创建 qt5vars.cmd,在我的情况下,它看起来像这样:

************************************************************************
REM ********** INITIALIZE ENV FOR MSVC 2013 CL COMPILER **********
SET PATH=C:\Windows;C:\Windows\system32
CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
REM ********** UPDATE INCLUDE & LIB TO SUPPORT XP WIN SDK 7.1A **********
SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%
SET CL=/D_USING_V120_SDK71_;%CL%
REM ********** INCLUDE OPENGL DESKTOP GLES SDK **********
SET PATH=D:\rzaba\qt\GLES_SDK\x86;%PATH%
SET INCLUDE=D:\rzaba\qt\GLES_SDK\include;%INCLUDE%
SET LIB=D:\rzaba\qt\GLES_SDK\x86;%LIB%
REM ********** 3D PARTY BUILD TOOLS BINARIES: PUTTY, RUBY, PERL, GIT, PYTHON ********** 
SET PATH=D:\putty;D:\Ruby22\bin;D:\Perl\bin;D:\Git;D:\Git\bin;D:\Git\cmd;D:\Python27;%PATH%
REM ********** SETUP QT QMAKE ENV **********
SET QMAKESPEC=win32-msvc2013
SET PATH=D:\rzaba\qt\src-5.5.0\qtbase\bin;D:\rzaba\qt\src-5.5.0\gnuwin32\bin;%PATH%
************************************************************************

通常脚本为构建配置 PATH、INCLUDE、LIB 环境变量。在 CL env 变量中可以强制 CL 编译器设置,这是我们定义 V120_XP 平台使用的主要地方。

现在在开始构建之前,您必须从源代码中编辑一些文件:

  1. 你必须编辑文件:qtwebengine\src\3rdparty\ninja\configure.py 找到行:“if platform.is_msvc():”并且你有 cl 编译器标志,你必须删除 '/WX' 标志,因为它会失败sdk7.1的编译。您还可以在此处添加“/D_US​​ING_V120_SDK71_”标志,以确保忍者工具也将定义为使用 V120_xp。

  2. 并且您必须编辑另一个文件: qtwebengine\src\process\process.pro 并在那里添加这些行:

赢32:{

QMAKE_CXXFLAGS += /D_US​​ING_V120_SDK71

QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,5.1

QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,5.1

}

您还应该将其添加到您的项目中。这将生成与 XP 兼容的 QtWebEngineProcess.exe 文件。如果没有这个 Visual C++ 2013 为 winXP 构建无效的 EXE 文件。

如果您现在打开命令行并调用此脚本,您必须 cd 到 qt 源目录并调用配置,这是我的配置:

配置 -prefix d:[你的安装路径] -confirm-license -target xp -opensource -opengl desktop -debug-and-release -nomake examples -nomake tests -no-warnings-are-errors

所以我想要构建调试和发布。如果您正确设置了所有内容,您应该会看到一些编译过程并为 qt 模块创建 Makefile。在调用 nmake 之后,编译需要几个小时,然后 nmake install 复制/安装创建的库到前缀。祝你好运

请记住,图形设备必须支持 OpenGL ES 2.0,否则在创建 QWebView 后,您的应用程序将被 OpenGL 驱动程序崩溃,或者窗口 GUI 变黑。如果你想在旧机器上运行你的应用程序,你可以构建 Mesa OpenGL 软件渲染(我做了,性能很慢,每刷新窗口 GUI 内容几秒钟,但它有效)并使用它代替硬件驱动程序。

于 2015-09-22T08:28:46.530 回答
0

Just open qtwebengine\src\process\process.pro with vs2013, modify to "Visual Studio 2013 - Windows XP (v120_xp)" an rebuild QtWebEngineProcess.exe

于 2015-11-02T04:59:59.290 回答
0

您需要使用 Visual Studio 2013 中的编译器,但支持 Windows XP(即 7.1A)的 Windows SDK 中的头文件/库:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\lib;%LIB%
set CL=/D_USING_V110_SDK71_

请注意,尽管 QtWebEngine 需要一个有效的 Qt Quick 堆栈(甚至是 QtWebEngineWidgets!),而后者又需要 OpenGL。因为 Windows XP 上的 OpenGL 支持几乎不存在,并且 ANGLE(DirectX 包装器)在 Windows XP 上不起作用,所以您需要确保安装了合适的第 3 方 OpenGL 驱动程序,或者退回到软件opengl32.dll(例如来自台面)。如果您有 Qt 许可证,您还可以依赖 Qt Quick 2d 渲染器。

于 2015-08-31T13:50:57.663 回答