В поддержку Qt

статьи в помощь разработчику

   

Главная

Статьи:

Выбор инструментов разработки

Установка MinGW

Установка Qt

Сборка Qt 5

Установка Qt Creator

Проблемы Qt 4.8.3

Распараллеливание компиляции

Распараллеливание для Qt 5.0.1

Сборка отладчика GDB

Установка библиотеки Qwt

Плагин Qwt

Установка QwtPolar

Установка QwtPplot3D

Изменение палитры цветов QwtPlot3D

Конфигурация сборки по умолчанию

Сборка Qt Creator из исходников

Пример использования QwtPlot

Масштабирование QwtPlot в стиле TChart

Синхронное масштабирование

Пример использования QwtPolar

Пример использования QwtPlot3D

Редактирование QSplitter

Сборка в Ubuntu для Windows

Установка пакетов без интернета

Установка драйвера NVIDIA

 

Главная > Сборка Qt 5 (старая редакция)

 

Сборка библиотеки 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.

На этом сборка завершена.

 

Предыдущая редакция доступна по ссылке.