QtWebEngine适用于Windows XP目标

时间:2015-07-28 14:04:18

标签: build windows-xp 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=

bat文件来配置构建

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

构建成功,但我无法使用QtWebEngine运行任何示例enter image description here

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

3 个答案:

答案 0 :(得分:7)

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

官方发布的问题

Qt 5.5.0官方发布qwebengine模块与Windows XP应用程序不兼容,即使你强制你的项目二进制文件与XP兼容性编译/链接设置/标志(QT DLL可能仍然不兼容),你可以执行你的exe二进制文件在XP下,你无论如何都不能使用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 +安装。因此,请确保您已经为运行程序的计算机安装了更新的图形驱动程序,因为您的OpenGL卡的XP驱动程序将非常过时,并且可能无法正常工作。

问题原因

出现任何问题只是因为默认的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(在我的案例中安装在标准位置: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来源 - 解压到D:\ rzaba \ qt \ src-5.5.0

  6. (我无法粘贴更多链接,因为我没有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%
    ************************************************************************
    

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

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

    1. 你必须编辑文件:qtwebengine \ src \ 3rdparty \ ninja \ configure.py 查找行:&#34;如果platform.is_msvc():&#34;并且你有cl编译器标志,你必须删除&#39; / WX&#39;标志,但是它将无法编译sdk7.1。您也可以在那里添加&#39; / D_USING_V120_SDK71 _&#39;标志,以确保忍者工具也将定义使用V120_xp。

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

    3. 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内容几秒钟,但它可以工作)并使用它代替硬件驱动程序。

答案 1 :(得分: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上运行,因此您需要确保安装了第三方OpenGL驱动程序,或者退回到软件opengl32.dll(例如来自mesa)。如果您拥有Qt许可证,您还可以依赖Qt Quick 2d渲染器。

答案 2 :(得分:0)

用vs2013打开qtwebengine \ src \ process \ process.pro,修改为“Visual Studio 2013 - Windows XP(v120_xp)”重建QtWebEngineProcess.exe