QtWebEngine适用于Windows XP目标

mbg*_*033 3 windows-xp build qtwebengine

我试图构建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=
Run Code Online (Sandbox Code Playgroud)

用于配置构建的bat文件

configure -debug-and-release -nomake examples -opensource -nomake tests -target xp -prefix c:\qt5\5.5\msvc2013-winxp
Run Code Online (Sandbox Code Playgroud)

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

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

小智 7

Qt WebEngine 5.5.0用于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中构建铬代码.通常使用OpenGL或/和ANGLE项目(使用Direc3D9Ex或Direct3D11)支持硬件图形操作来构建Windows下的Qt和chrome,如果你为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路径到包含,libs和二进制文件,为Qt和chrome的每个cl编译器执行传递/ D_USING_V120_SDK71_并传递/SUBSYSTEM:WINDOWS,5.01或/SUBSYSTEM:CONSOLE,5.01用于链接器调用,同时构建你的项目和QtWebEngineProcess.exe,简单不是吧:)

构建要求:

  1. Visual C++ 2013(在我的案例中安装在stardard位置:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0)

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

  3. 第三方工具,用于构建chrome:Git,Perl,Python,pscp.exe-您必须在构建之前将其二进制文件添加到PATH env变量.

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

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

(我无法粘贴更多链接,因为我没有2点声望,OMG!: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%
************************************************************************
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 你必须编辑文件:qtwebengine\src\3rdparty \ninja\configure.py查找行:"if platform.is_msvc():"并且你有cl编译器标志,你必须删除'/ WX'标志,但是它会失败编译sdk7.1.您还可以添加'/ D_USING_V120_SDK71_'标志,以确保忍者工具也将定义为使用V120_xp.

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

win32:{

QMAKE_CXXFLAGS + =/D_USING_V120_SDK71

QMAKE_LFLAGS_CONSOLE + = /SUBBSYSTEM:CONSOLE,5.1

QMAKE_LFLAGS_WINDOWS + = /SUBBSYSTEM:WINDOWS,5.1

}

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

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

configure -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内容几秒钟,但它工作)并使用它而不是硬件驱动程序.