Сборка библиотеки Qt 5 с MinGW
Старая редакция статьи, новую можно найти здесь.
Причины, побуждающие собирать библиотеку Qt 5, обсуждались
здесь. Если коротко, то это небходимость
сконфигурировать ее с опцией -opengl desktop.
В данной статье предлагается последовательность действий, приводящая
к осуществлению этой затеи. При подготовке статьи использовались
материалы ресурса.
Windows
Для сборки потребуются
исходники Qt 5
MSYS
MinGW 4.7
ActivePython
Strawberry Perl
Ruby
ICU
OpenSSL
Git
DirectX Software Development Kit (DXSDK)
последнему нужен
Windows SDK for Windows 7 and .NET Framework 4
а этому, в свою очередь,
Microsoft .NET Framework 4
Рассмотрим пошагово порядок действий.
1. Если это еще не сделано, устанавливаем MSYS.
Проще всего это сделать вместе с установкой MinGW 4.6 (см.
инструкцию). Для определенности
будем считать, что запуск MSYS осущесвляется с помощью пункта MinGW Shell
из группы ярлыков MinGW в меню Пуск или файла C:\Qt\mingw-4.6\msys\1.0\msys.bat.
2. Если это еще не сделано, устанавливаем MinGW 4.7
(см. инструкцию из пункта 1), например, в папку C:\Qt\mingw-4.7.
3. Создаем папку
C:\Qt\qt-5-deps
в которую будем устанавливать все компоненты, необходимые
для сборки Qt 5.
4. Скачиваем ActivePython с ресурса,
установочный файл
ActivePython-2.7.2.5-win32-x86.msi
45 MB
(версия файла на момент написания статьи)
устанавливаем в папку
C:\Qt\qt-5-deps\Python27
5. Скачиваем Strawberry Perl с ресурса,
установочный файл
strawberry-perl-5.16.2.1-32bit.msi
63 MB
(версия файла на момент написания статьи)
устанавливаем в папку
C:\Qt\qt-5-deps\strawberry
6. Скачиваем Ruby с ресурса,
установочный файл
rubyinstaller-1.9.3-p385.exe 14,7 MB
(версия файла на момент написания статьи)
устанавливаем в папку
C:\Qt\qt-5-deps\Ruby193
7. Скачиваем Git с ресурса,
установочный файл
Git-1.8.1.2-preview20130201.exe 14,7 MB
(версия файла на момент написания статьи)
устанавливаем в папку
C:\Qt\qt-5-deps\Git
8. Скачиваем Microsoft .NET Framework 4
по ссылке,
онлайн установщик
dotNetFx40_Full_setup.exe
устанавливаем в папку по умолчанию
C:\Program Files\Microsoft.NET
9. Скачиваем Windows SDK for Windows 7 and .NET Framework 4
по ссылке,
онлайн установщик
winsdk_web.exe
устанавливаем в папку по умолчанию
C:\Program Files\Microsoft SDKs
В процессе установки может выскочить ошибка
Installation of the "Microsoft
Windows SDK for Windows 7" product has reported the following
error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document
for further information.
Для устранения можно воспользоваться советом с
ресурса
удалить ранее установленный Microsoft Visual C++ 2010 Redistributable,
должно помочь.
Установке продукта Microsoft мешает другой продукт
Microsoft! Очень символично.
10. Скачиваем DirectX Software Development Kit
по ссылке,
установочный файл
DXSDK_Jun10.exe 571 MB
устанавливаем в папку
C:\Qt\qt-5-deps\DXSDK
На предложение разрешить сбор информации о компьютере
выбираем
No, I would not like to participate
По окончании установки проверяем среди системных наличие переменной
DXSDK_DIR, в которой прописано
C:\Qt\qt-5-deps\DXSDK\
Обратный слэш в конце здесь как раз нужен.
11. Скачиваем OpenSSL с ресурса,
архив
openssl-1.0.1c.tar.gz 4,25 MB
(версия файла на момент написания статьи)
помещаем его в папку
C:\Qt\qt-5-deps
Запускаем MinGW Shell
(см. пункт 1) и поочередно вводим команды
unset MAKE_COMMAND MAKEFLAGS
export PATH="/c/Qt/mingw-4.7/bin:$PATH"
cd /c/Qt/qt-5-deps
tar -zxvf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./Configure --prefix=/c/Qt/qt-5-deps/openssl-1.0.1c/dist no-idea no-mdc2 no-rc5 shared mingw
make depend && make && make install
12. Скачиваем ICU с ресурса,
архив
icu4c-49_1_2-src.zip 19,2 MB
(именно эта версия используется в устанавливаемой Qt 5.0.1)
помещаем его в папку
C:\Qt\qt-5-deps
Запускаем MinGW Shell
(см. пункт 1) и поочередно вводим команды
unset MAKE_COMMAND
export PATH="/c/Qt/mingw-4.7/bin:$PATH"
cd /c/Qt/qt-5-deps
unzip icu4c-49_1_2-src.zip
cd icu
./runConfigureICU MinGW --prefix=/c/Qt/qt-5-deps/icu/dist
make && make install
13. Скачиваем исходники библиотеки Qt 5
на странице
загрузки, архив
qt-everywhere-opensource-src-5.0.1.zip
270 MB
(версия файла на момент написания статьи)
распаковываем его в папку
C:\Qt
Итак, исходные файлы библиотеки теперь лежат в папке
C:\Qt\qt-everywhere-opensource-src-5.0.1
в ней же и будет происходить сборка. Для удобства
переименуем эту папку во что-нибудь более короткое, например
C:\Qt\qt-5.0.1
14. Копируем в папку
C:\Qt\qt-5.0.1\qtbase\bin
файлы собранной выше библиотеки ICU
C:\Qt\qt-5-deps\icu\dist\lib\icudt49.dll
C:\Qt\qt-5-deps\icu\dist\lib\icuin49.dll
C:\Qt\qt-5-deps\icu\dist\lib\icuuc49.dll
и OpenSSL
C:\Qt\qt-5-deps\openssl-1.0.1c\dist\bin\libeay32.dll
C:\Qt\qt-5-deps\openssl-1.0.1c\dist\bin\ssleay32.dll
15. Будет полезным сразу же обеспечить распараллеливание
компиляции. Для этого делаем, на всякий случай, резервную копию
файла
C:\Qt\qt-5.0.1\qtbase\qmake\generators\makefile.cpp
открываем его для редактирования и правим строку
QString makefilein = " -f " + subtarget->makefile;
которая встречается в этом файле 2 раза. Новая редакция
строки выглядит, например, так
QString makefilein = " -j9 -f " + subtarget->makefile;
Число потоков компиляции в ключе -jX
в Вашем случае зависит от количества ядер процессора N.
Обычно рекомендуется брать X = N + 1.
Если процессор поддерживает технологию Hyper-trheading, то число
потоков X = 2 · N + 1.
15. Для удобства создадим пакетный файл C:\Qt\qt-5.0.1\config.bat
со следующим содержимым
set INCLUDE=C:\Qt\qt-5-deps\icu\dist\include
set INCLUDE=%INCLUDE%;C:\Qt\qt-5-deps\openssl-1.0.1c\dist\include
set LIB=C:\Qt\qt-5-deps\icu\dist\lib
set LIB=%LIB%;C:\Qt\qt-5-deps\openssl-1.0.1c\dist\lib
set QMAKESPEC=
set QTDIR=
set PATH=C:\Qt\qt-5.0.1\qtbase\bin
set PATH=%PATH%;C:\Qt\qt-5.0.1\gnuwin32\bin
set PATH=%PATH%;C:\Qt\mingw-4.7\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\strawberry\c\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\strawberry\perl\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\Python27
set PATH=%PATH%;C:\Qt\qt-5-deps\Ruby193\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\icu\dist\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\openssl-1.0.1c\dist\bin
set PATH=%PATH%;C:\Qt\qt-5-deps\Git\cmd
set
PATH=%PATH%;%SystemRoot%\System32
set MAKE_COMMAND=
set DXSDK_DIR=C:\Qt\qt-5-deps\DXSDK\
configure -prefix C:\Qt\qt-5.0.1\qtbase -opensource -confirm-license
-platform win32-g++ -release -shared -debug-and-release -c++11 -qt-zlib
-icu -opengl desktop -openssl -iconv -plugin-sql-odbc -nomake tests
-nomake examples -no-vcproj
Замечания.
Опция -release в команде configure
нужна для того, чтобы по умолчанию проекты собирались в конфигурации
Выпуск, и при этом не требовалось добавлять
в команду qmake параметр CONFIG+=release.
Возможно, что опция -shared включается
автоматически и может не указываться явно.
Иногда рекомендуют указывать опцию -developer-build,
но при сборке установливаемой Qt 5.0.1, например, она не указывалась.
12. Запускаем терминал Windows (см. Пуск
> Все программы > Стандартные > Командная строка) и вводим команды
cd \Qt\qt-5.0.1
config.bat
Создание qmake и конфигурация сборки
библиотеки займет несколько минут. Теперь вводим команду
mingw32-make
и "курим бамбук" долго ли, коротко ли (в
зависимости от производительности компьютера). У меня сборка заняла
1 час 20 минут, причем около 30 минут из них заняла сборка WebKit.
13. После сборки папка с библиотекой занимает
около 7 GB. Ситуацию можно улучшить, отыскав и удалив все папки
.obj, это позволит высвободить почти 3 GB.
Проделать данную операцию можно, например, с помощью Total Commander.
Еще малую толику места можно освободить, удалив
паки: .moc, .rcc
и файлы: Makefile, *.Debug,
*.Release
14. Для использования библиотеки прописываем
в системную переменную QTDIR следующее значение
C:\Qt\qt-5.0.1\qtbase
а в переменную Path путь
C:\Qt\qt-5.0.1\qtbase\bin
15. Для корректной руссификации приложений создаем
папку
C:\Qt\qt-5.0.1\qtbase\translations
и копируем в нее все файлы *.qm
из папки
C:\Qt\qt-5.0.1\qttranslations\translations
16. В завершение соорудим себе привычное окружение. Создаем
пакетный файл C:\Qt\qt-5.0.1\qtbase\bin\qtvars.bat
со следующим содержимым
@echo off
rem
rem Этот файл был создан
по аналогии с одноименным из библиотеки Qt 4
rem
echo Setting up a
MinGW 4.7 / Qt 5 only environment...
echo -- QTDIR set
to C:\Qt\qt-5.0.1\qtbase
echo -- PATH set to
C:\Qt\qt-5.0.1\qtbase\bin
echo -- Adding C:\Qt\mingw-4.7\bin
to PATH
echo -- Adding %SystemRoot%\System32
to PATH
echo -- QMAKESPEC set
to win32-g++
set QTDIR=C:\Qt\qt-5.0.1\qtbase
set PATH=C:\Qt\qt-5.0.1\qtbase\bin
set PATH=%PATH%;C:\Qt\mingw-4.7\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++
Создаем группу ярлыков Qt 5.0.1
(MinGW desktop) (папку)
Windows XP: C:\Documents
and Settings\All Users\Главное меню\Программы\Qt 5.0.1
(MinGW desktop)
Windows 7: C:\ProgramData\Microsoft\Windows\Start
Menu\Programs\Qt 5.0.1
(MinGW desktop)
помещаем в нее ярлыки
Assistant
Объект: C:\Qt\qt-5.0.1\qtbase\bin\assistant.exe
Рабочая папка:
C:\Qt\qt-5.0.1\qtbase
Designer
Объект: C:\Qt\qt-5.0.1\qtbase\bin\designer.exe
Рабочая папка:
C:\Qt\qt-5.0.1\qtbase
Linguist
Объект: C:\Qt\qt-5.0.1\qtbase\bin\designer.exe
Рабочая папка:
C:\Qt\qt-5.0.1\qtbase
Qt 5.0.0 Command Prompt
Объект: %COMSPEC%
/k "C:\Qt\qt-5.0.1\qtbase\bin\qtvars.bat"
Рабочая папка:
C:\Qt\qt-5.0.1\qtbase
Сюда же можно будет поместить и ярлык Qt Creator.
На этом сборка завершена.
Предыдущая редакция доступна по ссылке.
|