2015-07-28 1 views
2

J'essayais de construire Qt5.5 pour pouvoir exécuter QtWebEngine sur Windows XP. Voici mon fichier de chauve-souris à l'environnement d'installation:QtWebEngine pour Windows XP cible

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= 

fichier bat pour configurer build

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

Successfull Build, mais je n'a pas pu exécuter aucun exemple avec QtWebEngine enter image description here

Est-il possible de construire QtWebEngine pour la cible WinXP ou incompatible avec WinXP?

Répondre

0

Vous devez utiliser le compilateur de Visual Studio 2013, mais les en-têtes/bibliothèques à partir d'un Windows prenant en charge SDK Windows XP (c'est 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_ 

Notez cependant que QtWebEngine nécessite un travail pile Qt Quick (même QtWebEngineWidgets!), qui à son tour nécessite OpenGL. Parce que le support OpenGL sur un stock Windows XP est presque inexistant, et que ANGLE (l'encapsuleur DirectX) ne fonctionne pas sous Windows XP, vous devez soit vous assurer qu'un pilote OpenGL tiers est installé, soit revenir à un logiciel opengl32.dll (par exemple depuis mesa). Si vous avez une licence Qt, vous pouvez également compter sur le moteur de rendu Qt Quick 2d.

6

Qt 5.5.0 WebEngine pour la construction de compatibilité Windows XP étapes

PROBLÈME AVEC DE PRESSE OFFICIELLE

Qt 5.5.0 module qwebengine de libération est incompatible avec oficial applications Windows XP, même si vous forcez votre projet binaire avec XP compatibilité Compilation/liens paramètres/drapeaux (DLL QT sont probablement encore incompatibles) et vous pouvez exec votre fichier binaire exe sous XP, vous ne pouvez pas utiliser le module qwebengine de toute façon - juste parce que QtWebEnbineProcess.exe est construit comme EXE non valide pour Windows XP. Pour que Qt WebEngine 5.5.0 puisse être exécuté sur winXP, vous devez reconstruire les modules Qt avec des options supplémentaires (comme cette version officielle de Qt est incompatible, vous devez en créer une nouvelle). Sous Windows, QtWebEngine ne peut être construit que dans Visual Studio 2013, il est impossible de créer du code chrome dans une autre version de Visual Studio. Normalement Qt et chrome sous Windows peuvent être construits en utilisant le support OpenGL et/ou ANGLE (qui utilise Direc3D9Ex ou Direct3D11) pour les opérations graphiques matérielles, si vous construisez pour WinXP vous n'avez pas le choix, vous devez utiliser OpenGL (qui est le pire choix, si vous avez choisi), parce que Direct3D9Ex/Direct3D11 sont disponibles pour installer seulement à partir de Vista +. Donc, assurez-vous que vous avez installé des pilotes graphiques mis à jour pour la machine où va fonctionner votre programme, car les pilotes stock XP pour votre carte pour OpenGL seront très obsolètes et ne fonctionneront peut-être pas.

PROBLÈME GENESIS

Les problèmes se produisent juste parce que par défaut Visual C++ 2013 compilation de l'application est incompatible avec XP (Runtime C et sous-EXE), mais vous pouvez toujours modifier et utiliser l'exécution compatible avec Windows XP dans Visual C++ 2013 , cela est décrit là:

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

vous devez donc ajouter basiquement chemins d'accès Windows SDK7.1A pour inclure, libs et binaires, passer/D_USING_V120_SDK71_ pour chaque exécution du compilateur cl pour Qt et le chrome et passer/SUBSYSTEM: WINDOWS, 5.01 ou /SUBSYSTEM:CONSOLE.5.01 pour les invocations de liens pendant la construction de votre projet et QtWebEngineProcess.exe, simple ne l'est pas :)

exigences Build:

  1. Visual C++ 2013 (dans mon cas installé dans un endroit stardard: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0)

  2. SDK Windows 7.1A - dernier SDK compatible avec Windows XP,/forces de D_USING_V120_SDK71_ à l'utiliser (dans mon cas installé dans un endroit standard: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A)

  3. Outils tiers, utilisés pour construire du chrome: Git, Perl, Python, pscp.exe - vous devez ajouter leurs binaires à la variable d'environnement PATH avant la construction.

  4. OpenGL ES SDK pour utiliser l'implémentation d'OpenGL ES 2.0, j'ai téléchargé depuis AMD (dans mon cas, j'ai téléchargé sur D: \ rzaba \ qt \ GLES_SDK).

  5. Qt 5.5.0 sources- décompressé à D: \ rzaba \ qt \ src-5.5.0

(je ne peux pas coller plus de liens parce que je n'ai pas la réputation 2 points, OMG: D)

processus de construction

d'abord lire ceci: http://doc.qt.io/qt-5/windows-building.html, nous devons le faire comme là-bas, mais peu pas de plus est nécessaire pour XP build compatible.

Maintenant, si le code source est décompressé et tout est installé créer qt5vars.cmd, dans mon cas, il ressemble à ceci:

************************************************************************ 
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% 
************************************************************************ 

de script configure Généralement PATH, INCLUDE, variables d'environnement LIB pour la construction. Dans CL env variable peut forcer le réglage du compilateur CL, c'est l'endroit principal où nous définissons l'utilisation de la plate-forme V120_XP.

Maintenant, avant de commencer à vous construire doit modifier certains fichiers de sources:

  1. vous devez modifier le fichier: qtwebengine \ src \ 3rdparty \ ninja \ configure.py ligne Chercher avec: « si platform.is_msvc(): "et là vous avez cl drapeaux de compilateur, vous devez supprimer le drapeau '/ WX', car il échouera la compilation pour sdk7.1. Vous pouvez également y ajouter un drapeau '/ D_USING_V120_SDK71_' pour vous assurer que l'outil ninja définira également V120_xp.

  2. et vous devez modifier un autre fichier: qtwebengine \ src \ processus \ process.pro et il ajouter ces lignes:

win32: {

QMAKE_CXXFLAGS + =/D_USING_V120_SDK71

QMAKE_LFLAGS_CONSOLE + = /SUBSYSTEM:CONSOLE,5.1

QMAKE_LFLAGS_WINDOWS + = /SUBSYSTEM:WINDOWS,5.1

}

vous devriez également ajouter cela dans votre projet.Cela générera le fichier QtWebEngineProcess.exe compatible avec XP. Sans cela, Visual C++ 2013 génère un fichier EXE non valide pour winXP.

Si vous ligne de commande ouverte et appel de ce script maintenant vous devez cd au répertoire source qt et appeler configure, voici ma configuration:

configure -prefix d: [votreliste chemin d'installation] -confirm-licence -target xp -opensource -opengl bureau -debug-and-release -nomake exemples -nomake tests -no-warnings-are-errors

Donc je veux construire le débogage et la sortie. Si vous configurez tout correctement, vous devriez voir un processus de compilation et créer des Makefiles pour les modules qt. Après cet appel nmake, la compilation dure quelques heures, et nmake install pour copier/installer les bibliothèques créées en préfixe. Rappelez-vous que le périphérique graphique doit prendre en charge OpenGL ES 2.0, sinon, après la création de QWebView, votre application se bloque par le pilote OpenGL ou l'interface graphique de la fenêtre devient noire. Si vous voulez exécuter votre application sur une ancienne machine, vous pouvez créer un rendu Mesa OpenGL (je l'ai fait et les performances sont faibles, quelques secondes par le contenu de l'interface graphique, mais cela fonctionne) et l'utiliser à la place.

+0

Vous avez écrit dans le fichier * .pro: QMAKE_CXXFLAGS + =/D_USING_V120_SDK71. Mais où est le dernier trait de soulignement/D_USING_V120_SDK71_? En outre, j'ai rencontré l'instruction suivante QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 sur l'autre site. (1) Alors, quelle version dois-je choisir - 5.01 ou 5.1? (2) Où devrais-je définir '--single-process' si je voudrais déboguer mon programme qui appelle implicitement QtWebEngineProcess.exe? (3) Quelles sont les dll tierces que je dois déployer (par exemple OpenGL ES SDK)? (4) Est-ce que la version de débogage du programme est capable de fonctionner avec QtWebEngineProcess.exe (mélange de versions et débogage des DLLs dans un dossier)? – ilya

+0

S'il vous plaît, ajouter des informations explicites que ce moteur ne fonctionne pas avec XP depuis Qt 5.6 :(https://bugreports.qt.io/browse/QTBUG-49900 – ilya

0

Il suffit d'ouvrir qtwebengine \ src \ processus \ process.pro avec vs2013, modifier à "Visual Studio 2013 - Windows XP (v120_xp)" une reconstruction QtWebEngineProcess.exe