Шаги сборки Qt WebEngine 5.5.0 для совместимости с Windows XP
ПРОБЛЕМА С ОФИЦИАЛЬНЫМ ВЫПУСКОМ
Официальный выпуск Qt 5.5.0 Модуль qwebengine несовместим с приложениями Windows XP, даже если вы форсируете свой двоичный файл проекта с компиляцией / настройками компоновки / флагами совместимости с XP (QT DLL, вероятно, все еще несовместимы), и вы можете выполнить свой двоичный файл exe под XP, вы все равно не можете использовать модуль qwebengine - только потому, что QtWebEnbineProcess.exe построен как недопустимый EXE для Windows XP.
Чтобы Qt WebEngine 5.5.0 мог работать на winXP, вы должны пересобрать модули Qt с дополнительными параметрами (поскольку официальный выпуск Qt вообще несовместим, вы должны собрать новый). Под Windows QtWebEngine можно собрать только в Visual Studio 2013, невозможно собрать код хрома в другой версии Visual Studio. Обычно Qt и Chromium под Windows могут быть собраны с использованием OpenGL и/или проекта ANGLE (который использует Direc3D9Ex или Direct3D11) с поддержкой аппаратных графических операций, если вы собираете для WinXP, у вас нет выбора, вы должны использовать OpenGL (что является худшим выбором, если у вас есть выбор), потому что Direct3D9Ex/Direct3D11 доступны для установки только из Vista+. Поэтому убедитесь, что вы установили обновленные графические драйверы для машины, на которой будет запускаться ваша программа, потому что стандартные драйверы XP для вашей карты для OpenGL будут очень устаревшими и, возможно, не будут работать.
ГЕНЕЗИС ПРОБЛЕМЫ
Любые проблемы возникают только потому, что компиляция приложения Visual C++ 2013 по умолчанию несовместима с XP (среда выполнения C и подсистема EXE), но вы все равно можете изменить и использовать среду выполнения, совместимую с WinXP, в Visual C++ 2013, это описано здесь:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
поэтому в основном вы должны добавить пути Windows SDK7.1A для включения, библиотеки и двоичные файлы, передать /D_USING_V120_SDK71_ для каждого выполнения компилятора cl для Qt и chromium и передать /SUBSYSTEM:WINDOWS,5.01 или /SUBSYSTEM:CONSOLE,5.01 для вызовов компоновщика во время сборки вашего проект и QtWebEngineProcess.exe, просто не правда ли :)
Требования к сборке:
Visual C++ 2013 (в моем случае установлен в стандартном месте: C:\Program Files (x86)\Microsoft Visual Studio 12.0)
Windows SDK 7.1A — последний SDK, совместимый с Windows XP, /D_USING_V120_SDK71_ заставляет его использовать (в моем случае установлен в стандартном месте: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A)
Сторонние инструменты, используемые для сборки хрома: Git, Perl, Python, pscp.exe — вы должны добавить их двоичные файлы в переменную PATH env перед сборкой.
OpenGL ES SDK для использования реализации OpenGL ES 2.0 я скачал с AMD (в моем случае скачал в D:\rzaba\qt\GLES_SDK).
Исходники Qt 5.5.0 - распакованы в 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%
************************************************************************
Обычно скрипт настраивает переменные окружения PATH, INCLUDE, LIB для сборки. В CL переменная env может вызвать настройку компилятора CL, это основное место, где мы определяем использование платформы V120_XP.
Теперь, прежде чем начать сборку, вы должны отредактировать некоторые файлы из исходников:
вы должны отредактировать файл: qtwebengine\src\3rdparty\ninja\configure.py найти строку с: "if platform.is_msvc():" и там у вас есть флаги компилятора cl, вы должны удалить флаг '/WX', потому что это не удастся компиляция для SDK7.1. Вы также можете добавить туда флаг '/D_USING_V120_SDK71_', чтобы убедиться, что инструмент ниндзя также определит использование V120_xp.
и вы должны отредактировать другой файл: qtwebengine\src\process\process.pro и добавить туда эти строки:
win32: {
QMAKE_CXXFLAGS += /D_USING_V120_SDK71
QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,5.1
QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,5.1
}
вы также должны добавить это в свой проект. Это создаст файл QtWebEngineProcess.exe, совместимый с XP. Без этого Visual C++ 2013 создает недопустимый EXE-файл для WinXP.
Если вы откроете командную строку и вызовете этот скрипт сейчас, вы должны перейти в исходный каталог qt и вызвать configure, это моя конфигурация:
configure -prefix d:[там ваш путь установки] -confirm-license -target xp -opensource -opengl desktop -debug-and-release -nomake examples -nomake Tests -no-warnings-are-errors
Поэтому я хочу построить отладку и релиз. Если вы все настроили правильно, вы должны увидеть процесс компиляции и создать Makefiles для модулей qt. После этого вызова nmake компиляция занимает несколько часов, а затем установка nmake для копирования/установки созданных библиотек в префикс. Удачи
Помните, что графическое устройство должно поддерживать OpenGL ES 2.0, иначе после создания QWebView ваше приложение вылетит из-за драйвера OpenGL, или графический интерфейс окна станет черным. Если вы хотите запустить свое приложение на старой машине, вы можете создать программный рендеринг Mesa OpenGL (я сделал это, и производительность очень низкая, несколько секунд на любое обновление содержимого графического интерфейса окна, но это работает) и использовать его вместо аппаратного драйвера.
person
user5362462
schedule
22.09.2015