qt5.6 webengine兼容xp的编译方法
http://www.qtcn.org/bbs/read-htm-tid-62470.html
http://stackoverflow.com/questions/31678657/qtwebengine-for-windows-xp-target
2 down vote favorite
2
I was trying to build Qt5.5 to be able to run QtWebEngine on Windows XP. Here's my bat file to setup environment:
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 file to configure build
configure -debug-and-release -nomake examples -opensource -nomake tests -target xp -prefix c:\qt5\5.5\msvc2013-winxp
Build successfull, but I was unable to run any example with QtWebEngineenter image description here
Is it possible to build QtWebEngine for WinXP target or it incompatible with WinXP?
Qt WebEngine 5.5.0 for Windows XP compatibility build steps
PROBLEM WITH OFFICIAL RELEASE
Qt 5.5.0 oficial release qwebengine module is incompatible with Windows XP applications, even if you force your project binary with XP compatibility compilation/linking settings/flags(QT DLLs are probably still incompatible) and you can exec your exe binary file under XP, you can't use qwebengine module anyway- just because QtWebEnbineProcess.exe is build as invalid EXE for windows XP.
To make Qt WebEngine 5.5.0 possible to run on winXP you must rebuild Qt modules with additional options way (as as said oficial Qt release is incompatible at all, you must build new one). Under Windows QtWebEngine can be only build only in Visual Studio 2013, there is no possible to build chromium code in another version of Visual Studio. Normally Qt and chromium under Windows can be build with using OpenGL or/and ANGLE project(which uses Direc3D9Ex or Direct3D11) support for hardware graphics operations, if you build for WinXP you have no choose, you must use OpenGL(which is worst choise, if you have choise), because Direct3D9Ex/Direct3D11 are available to install only from Vista+. So make sure you have installed updated graphics drivers for machine where will run your program, because stock XP drivers for your card for OpenGL will be very outdated and perhaps won't work valid.
PROBLEM GENESIS
Any problems occur just because default Visual C++ 2013 app compilation is incompatible with XP(C runtime and EXE subsystem), but you can still change and use runtime compatible with WinXP in Visual C++ 2013, this is described there:
so basicly you must add Windows SDK7.1A paths to include, libs and binaries, pass /D_USING_V120_SDK71_ for every cl compiler execution for Qt and chromium and pass /SUBSYSTEM:WINDOWS,5.01 or /SUBSYSTEM:CONSOLE,5.01 for linker invocations while build your project and QtWebEngineProcess.exe, simple isn't it :)
Build requirements:
Visual C++ 2013 (in my case installed in stardard location: C:\Program Files (x86)\Microsoft Visual Studio 12.0)
Windows SDK 7.1A - last Windows XP compatible SDK, /D_USING_V120_SDK71_ forces to use it (in my case installed in standard location: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A)
3rd party tools, used to build chromium: Git, Perl, Python, pscp.exe- you must add their binaries to PATH env variable before build.
OpenGL ES SDK to use OpenGL ES 2.0 implementation, I downloaded from AMD (in my case donwloaded to D:\rzaba\qt\GLES_SDK).
Qt 5.5.0 sources- unpacked to D:\rzaba\qt\src-5.5.0
(I can't paste more links because I don't have 2 points reputation, OMG! :D)
Build process
First read this: http://doc.qt.io/qt-5/windows-building.html, we must do this like there, but few more step is need for XP compatible build.
Now if source code is unpacked and everything is installed create qt5vars.cmd, in my case it looks like this:
************************************************************************
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%
************************************************************************
Generally script configures PATH, INCLUDE, LIB env variables for build. In CL env variable can force CL compiler setting, this is main place where we define V120_XP platform usage.
Now before you start build you must edit some files from sources:
you must edit file: qtwebengine\src\3rdparty\ninja\configure.py find line with: "if platform.is_msvc():" and there you have cl compiler flags, you must remove '/WX' flag, becuse it will fails compilation for sdk7.1. You can also add there '/D_USING_V120_SDK71_' flag, to make sure ninja tool will also define to use V120_xp.
and you must edit another file: qtwebengine\src\process\process.pro and add there those lines:
win32: {
QMAKE_CXXFLAGS += /D_USING_V120_SDK71
QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,5.1
QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,5.1
}
you should also add this into your project. This will generate QtWebEngineProcess.exe file compatible with XP. Without this Visual C++ 2013 builds invalid EXE file for winXP.
If you open command line and call this script now you must cd to qt source directory and call configure, this is my configuration:
configure -prefix d:[your install path there] -confirm-license -target xp -opensource -opengl desktop -debug-and-release -nomake examples -nomake tests -no-warnings-are-errors
So I want build debug and release. If you setup everything correctly you should see some compilation process and create Makefiles for qt modules. After that call nmake, compilation makes few hours, and nmake install to copy/install created libraries to prefix. Good luck
Remember that graphics device must support OpenGL ES 2.0, otherwise after creation QWebView your app will crash by OpenGL driver, or window GUI becomes black. If you want run your app on old machine, you can build Mesa OpenGL software render(I did it and performance is rly slow, few seconds per any refresh window GUI content, but it works) and use it instead hardware driver.
shareimprove this answer
answered Sep 22 '15 at 8:28
user5362462
612
You have written in the *.pro file: QMAKE_CXXFLAGS += /D_USING_V120_SDK71. But where is the last underscore /D_USING_V120_SDK71_? Also, I've met the following instruction QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 on the other site. (1) So, which version should I choose - 5.01 or 5.1? (2) Where should I set --single-process if I'd like to debug my program which implicitly calls QtWebEngineProcess.exe? (3) Which 3rd party dlls do I have to deploy (e.g. OpenGL ES SDK)? (4) Is debug version of program able to work with QtWebEngineProcess.exe (mixing release and debug Qt dlls in 1 folder)? – ilya Nov 7 '16 at 7:22
Please, add explicit info that this engine does not work with XP since Qt 5.6 :( bugreports.qt.io/browse/QTBUG-49900 – ilya Nov 8 '16 at 18:06
add a comment
up vote 0 down vote
You need to use the compiler from Visual Studio 2013, but the headers/libraries from a Windows SDK supporting Windows XP (that's 7.1A):
"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_
Note though that QtWebEngine requires a working Qt Quick stack (even QtWebEngineWidgets!), which in turn requires OpenGL. Because OpenGL support on a stock Windows XP is close to non-existent, and ANGLE (the DirectX wrapper) is not working on Windows XP, you need either to make sure there's a decent 3rd party OpenGL driver installed, or fall back to a software opengl32.dll (e.g. from mesa). If you've a Qt license you can also rely on the Qt Quick 2d renderer.
shareimprove this answer
answered Aug 31 '15 at 13:50
kkoehne
624513
add a comment
up vote 0 down vote
Just open qtwebengine\src\process\process.pro with vs2013, modify to "Visual Studio 2013 - Windows XP (v120_xp)" an rebuild QtWebEngineProcess.exe
qt5.6 webengine兼容xp的编译方法的更多相关文章
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序 good(从VS2012 update1开始支持xp和c++11)
一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa原创文章,转载请标明出处. 一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visua ...
- Spark-1.0.1 的make-distribution.sh编译、SBT编译、Maven编译 三种编译方法
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3775343.html 本文编译方法所支持的hadoop环境是Hadoop-2.2.0, ...
- osip及eXosip的编译方法
osip及eXosip的编译方法 在最新版本的osip2.exosip2中不支持在VC6.0下编译osip.exosip协议栈的方法 说明: 1.以下文章中的osip版本为3.1.0 2.eXosip ...
- (转)wxWidgets 2.9.2svn(3.x)最小体积编译方法
官方论坛.网上记录的wxWidgets编译方法,会导致编译后的程序库非常大,原因在于对编译的方法选择不当.下面简单总结一下如何编译最新的SVN代码.下载最新源码(每日构建):http://biolpc ...
- 2018-01-28-TF源码做版本兼容的一个粗暴方法
layout: post title: 2018-01-28-TF源码做版本兼容的一个粗暴方法 key: 20180128 tags: IT AI TF modify_date: 2018-01-28 ...
- QxOrm 1.2.9 下载 以及编译方法 简介.
QxOrm 是一个基于QT开发的数据库方面的ORM库,功能很强大,是QT C++数据开发方面的好工具. 目前已经更新1.3.1 .但 不幸的是 它的官网http://www.qxorm.com/ 莫名 ...
- vue js计算精度问题处理,兼容XP系统
js计算精度问题(浮点数误差,大数计算出错) JavaScript 运算时经常遇到会 0.000000001 和 0.999999999 这样奇怪的结果. 网上教程一大篇,原理请百度,抄作业往下看!! ...
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法 HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页 ...
随机推荐
- BZOJ 1369 Gem - 树型dp
传送门 题目大意: 给一棵树上每个点一个正权值,要求父子的权值不同,问该树的最小权值和是多少. 题目分析: 证不出来最少染色数,那就直接信仰用20来dp吧:dp[u][i]表示u节点权值赋为i时u子树 ...
- wpf SnapsToDevicePixels
原文:wpf SnapsToDevicePixels 可以在您的根元素上将此属性设为 true,以在整个 UI 上启用像素对齐呈现. 对于运行在大于 96 每英寸点数 (dpi) 的设备,像素对 ...
- Python 第三方库 cp27、cp35 等文件名的含义
What does version name 'cp27' or 'cp35' mean in Python? 如对于 gensim-0.12.4-cp27-none-win_amd64.whl文件名 ...
- mysql创建用户、赋予指定权限命令
1.远程登录mysql mysql -h ip -u root -p 密码 2.创建用户 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码 ...
- C#7
C#7 阅读目录 out变量 元组(Tuples) 模式匹配(Pattern matching) 本地引用和返回(Ref locals and returns) 本地函数(Local function ...
- leveldb原理和使用
LevelDB是一个基于本地文件的存储引擎,非分布式存储引擎,原理基于BigTable(LSM文件树),无索引机制,存储条目为Key-value.适用于保存数据缓存.日志存储.高速缓存等应用,主要是避 ...
- Java--面试通关要点
这里,笔者结合自己过往的面试经验,整理了一些核心的知识清单,帮助读者更好地回顾与复习 Java 服务端核心技术.本文会以引出问题为主,后面有时间的话,笔者陆续会抽些重要的知识点进行详细的剖析与解答. ...
- CMake生成OpenCV解决方案&&编译OpenCV源码
生成OpenCV工程需要用到CMake,所以第一步需要下载CMake软件,下载链接:CMake下载 目前最新的版本是3.7.1,这里选择下载Platform下的Windows win32-x86 ZI ...
- 【转】Mysql rownum 实现 及应用
Mysql rownum 实现 转自:http://blog.csdn.net/saydo/article/details/22725953 SELECT @rownum:=@rownum+1 A ...
- 创建asp.net core 的静态网站
这个名字听起来很怪 既然是静态网站 为什么要是asp.net core的呢? 1.在vs上面好像不能创建纯静态的网站,所以我们就想创建一个asp.net core的空网站 然后在里面使用静态的html ...