Jul 232012
 

Описалово ниже.

Microsoft Visual Studio 2010, git, strawberry perl, python 2.7 (или выше, но с третьей версией у меня не заработало) и jom (для многоядерной сборки) уже должны быть установлены, библиотеки pthreads, icu и openssl собраны.

Путь к Qt5G:\git\qt5\.

Переменные окружения (кстати, Rapid Environment Editor очень удобная прога, рекомендую):

  • CL = /MP
  • INCLUDE = G:\git\qt5\qtbase\include;G:\git\qt5\qtwebkit\WebKitBuild\Release\include;G:\include;G:\programs\GnuWin32\include;G:\libs\pthreads\include;G:\git\qt5\qtbase\include;G:\libs\icu\include;G:\libs\openssl\include
  • LIB = G:\git\qt5\qtwebkit\WebKitBuild\Release\lib;G:\programs\GnuWin32\lib;G:\git\qt5\qtbase\lib;G:\libs\pthreads\lib\x86;G:\libs\icu\lib;G:\libs\openssl\lib\VC
  • Path = G:\git\qt5\qtwebkit\WebKitBuild\Release\bin;G:\libs\pthreads\dll\x86;G:\programs\Python27;G:\git\qt5\qtbase\bin;G:\programs\GnuWin32\bin;G:\programs\jom;G:\libs\icu\bin;G:\libs\openssl\bin;G:\Programs\Git\cmd;G:\programs\strawberry\c\bin;G:\programs\strawberry\perl\site\bin;G:\programs\strawberry\perl\bin;…
  • QTDIR = G:\git\qt5\qtbase

Сборка Qt5.

  1. Запускаем студийную консоль, переходим в G:\git.
  2. Пишем: git clone git://gitorious.org/qt/qt5.git qt5.
  3. Затем переходим в G:\git\qt5, пишем там: perl init-repository и ждем.
  4. Конфигурируем через configure.
  5. Пишем: perl build -j 4 и долго ждем.

Сборка QtWebKit.

  1.  В G:\git\qt5 пишем: perl build -j 4 qtwebkit и ждем.
  2. Если будет ругаться в самом конце на ненайденный внешний символ, то в G:\git\qt5\qtwebkit\WebKitBuild\Release\Source\Makefile.api.* в переменную LIBS в самое начало списка добавляем: advapi32.lib.
  3. Опять пишем: perl build -j 4 qtwebkit и ждем.
  4. Если нужна debug версия, которая из-за криворуких разработчиков не собралась (то есть предыдущая компиляция собрала QtWebKit5.dll и вылетела с ошибкой), то открываем powershell и переходим в G:\git\qt5\qtwebkit\.
  5. Пишем там последовательно три команды:
    • get-childItem -recurse -include ‘*makefile*release*’ | rename-item -newname { $_.name -replace ‘release’,'release_bak’ }
    • get-childItem -recurse -include ‘*makefile*debug*’ | rename-item -newname { $_.name -replace ‘debug’,'release’ }
    • get-childItem -recurse -include ‘*makefile*release_bak*’ | rename-item -newname { $_.name -replace ‘release_bak’,'debug’ }
  6. Затем возвращаемся в студийную консоль и опять пишем:  perl build -j 4 qtwebkit.
  7. Если будет ошибка: “g:\git\qt5\qtwebkit\Tools\DumpRenderTree\WorkQueue.cpp(33) : fatal error C1083: Cannot open include file: ‘WorkQueueItemQt.h’: No such file or directory“, то делаем такой симлинк: G:\git\qt5\qtwebkit\Tools\DumpRenderTree\qt\WorkQueueItemQt.h (src) -> G:\git\qt5\qtwebkit\Tools\DumpRenderTree\WorkQueueItemQt.h (dst).
  8. Опять запускаем  perl build -j 4 qtwebkit.
  9. Возвращаем все как было тремя командами в powershell:
    • get-childItem -recurse -include ‘*makefile*debug*’ | rename-item -newname { $_.name -replace ‘debug’,'debug_bak’ }
    • get-childItem -recurse -include ‘*makefile*release*’ | rename-item -newname { $_.name -replace ‘release’,'debug’ }
    • get-childItem -recurse -include ‘*makefile*debug_bak*’ | rename-item -newname { $_.name -replace ‘debug_bak’,'release’ }

Qt5 и QtWebKit собраны.

При сборке проектов не забывать линковаться с qtmain.lib и не забывать про дефайн QT_DLL.

  One Response to “How to compile Qt5 with QtWebKit from git on Windows 7”

  1. На сегодняшний день достаточно сделать так:
    …\qt5\qtwebkit>perl Tools\Scripts\build-webkit –qt