В поддержку Qt

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

   

Главная

Статьи:

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

Установка MinGW

Установка SDK 7

Установка Qt

Сборка Qt

Установка Qt Creator

Настройка 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

 

Сборка библиотеки Qt

В данной статье приводятся пошаговые инструкции сборки библиотеки Qt 5 под Windows c MinGW и MSVC 2010. Библиотека Qt, собранная по одной из этих инструкций, будет не только полноценной, но еще и правильно сконфигурированной. Последнее означает, что в результате сборки и установки в отдельную папку будет выделено минимально необходимое количество файлов, а весь довольно объемный "мусор", порожденный в процессе сборки, останется в другом месте и может быть в последствии удален.

Все, о чем говорилось выше, является "оптимистической лирикой", а теперь "суровая правда жизни": в настоящее время нет никакой необходимости собирать библиотеку Qt 5 ни с MinGW, ни с MSVC 2010. Когда то таковая необходимость возникала в связи с тем, что разработчики в очередном релизе не удосуживались представить версию сборки, сконфигурированную с опцией -opengl desktop. Актуальная на сегодняшний день версия Qt сконфигурирована с опцией -dynamicgl и выполняет все, что от нее требуется.

Тем не менее, на освоение навыков сборки Qt из исходников в свое время было затрачено не мало усилий. Не хотелось бы их бездарно растерять, к тому же, нет никаких гарантий, что эти навыки однажды не окажутся востребованными. Это и явилось побудительным мотивом к написанию данной статьи. Ниже приведены инструкции по сборке Qt 5 с MinGW и с MSVC 2010. Для переключения между ними используйте ссылку [Переключить].

Еще одна "ложка дегтя". Не стоит даже пытаться собрать библиотеку Qt, не имея в своем распоряжении производительного компьютера (желательно i7, 4 ядра, 8 потоков по технологии Hyper-trheading). В противном случае, продолжительность процесса сборки будет измеряться не часами, а сутками, а закончиться все может тихой истерикой после возникновения непредвиденной ошибки.

Windows

Qt 5 с MinGW         [Переключить]

Для сборки потребуются

исходники Qt 5
MinGW
MSYS
ActivePython
Strawberry Perl
Ruby
ICU
OpenSSL
Git
DirectX Software Development Kit
(DXSDK)

последнему нужен

Windows SDK for Windows 7

а этому, в свою очередь,

Microsoft .NET Framework 4

Для определенности договоримся, что библиотеку будем собирать в папке E:\Qt\qt-src-5.5.1, а устанавливать – в папку C:\Qt\qt-5.5.1. Большинство компонентов, необходимых для сборки Qt, будем устанавливать в папку E:\Qt\qt5-deps (или собирать их в этой папке). Рассмотрим пошагово порядок действий.

1. Руководствуясь инструкцией, устанавливаем MinGW 4.9.2 и MSYS (вместе с MinGW 4.6.2).

2. Скачиваем ActivePython с ресурса, установочный файл

ActivePython-2.7.10.12-win32-x86.msi     39 MB
(версия файла на момент написания статьи)

устанавливаем в папку E:\Qt\qt5-deps\Python27

3. Скачиваем Strawberry Perl с ресурса, установочный файл

strawberry-perl-5.22.0.1-32bit.msi     76 MB
(версия файла на момент написания статьи)

устанавливаем в папку E:\Qt\qt5-deps\Strawberry

4. Скачиваем Ruby с ресурса, установочный файл

rubyinstaller-2.1.7.exe     17 MB
(версия файла на момент написания статьи)

устанавливаем в папку E:\Qt\qt5-deps\Ruby21

5. Скачиваем Git с ресурса, установочный файл

Git-2.6.3-32-bit.exe     29 MB
(версия файла на момент написания статьи)

устанавливаем в папку C:\Tools\Git

В данном случае папка установки выбрана по личным соображениям.

6. Устанавливаем Windows SDK for Windows 7 and .NET Framework 4 (см. инструкцию).

7. Скачиваем DirectX Software Development Kit по ссылке, установочный файл

DXSDK_Jun10.exe     572 MB

устанавливаем в папку E:\Qt\qt5-deps\DXSDK

На предложение разрешить сбор информации о компьютере выбираем

No, I would not like to participate

По окончании установки проверяем среди системных наличие переменной DXSDK_DIR, в которой прописано

E:\Qt\qt5-deps\DXSDK\

Обратный слэш в конце здесь как раз нужен.

8. Скачиваем OpenSSL с ресурса, архив

openssl-1.0.2d.tar.gz     5 MB
(версия файла на момент написания статьи)

помещаем его в папку E:\Qt\qt5-deps. Запускаем MinGW Shell (см. MinGW 4.6.2) и поочередно вводим команды

unset MAKE_COMMAND MAKEFLAGS
export PATH="/c/Qt/mingw-4.9.2/bin:$PATH"
cd /e/Qt/qt5-deps
tar -zxvf openssl-1.0.2d.tar.gz
cd openssl-1.0.2d
./Configure --prefix=/e/Qt/qt5-deps/openssl-1.0.2d/dist no-idea no-mdc2 no-rc5 shared mingw
make depend && make && make install

9. Скачиваем ICU с ресурса, архив

icu4c-54_1-src.zip     26 MB
(именно эта версия используется в устанавливаемой Qt 5.5.1)

помещаем его в папку E:\Qt\qt5-deps. Запускаем MinGW Shell (см. MinGW 4.6.2) и поочередно вводим команды

unset MAKE_COMMAND
export PATH="/c/Qt/mingw-4.9.2/bin:$PATH"
cd /e/Qt/qt5-deps
unzip icu4c-54_1-src.zip
cd icu
./runConfigureICU MinGW --prefix=/e/Qt/qt5-deps/icu/dist
make && make install

10. Скачиваем исходники библиотеки Qt 5 на странице загрузки, архив

qt-everywhere-opensource-src-5.5.1.zip     542 MB
(версия файла на момент написания статьи)

распаковываем его в E:\Qt, переименовываем папку E:\Qt\qt-everywhere-opensource-src-5.5.1, как договаривались, в E:\Qt\qt-src-5.5.1.

11. Копируем в папку E:\Qt\qt-src-5.5.1\qtbase\bin файлы собранной выше библиотеки ICU

E:\Qt\qt5-deps\icu\dist\lib\icudt54.dll
E:\Qt\qt5-deps\icu\dist\lib\icuin54.dll
E:\Qt\qt5-deps\icu\dist\lib\icuuc54.dll

в папку E:\Qt\qt-src-5.5.1\qtbase\lib файлы

E:\Qt\qt5-deps\icu\dist\lib\icudt.dll
E:\Qt\qt5-deps\icu\dist\lib\icuin.dll
E:\Qt\qt5-deps\icu\dist\lib\icuuc.dll

и в папку E:\Qt\qt-src-5.5.1\qtbase\include копируем папки с файлами заголовков ICU и OpenSSL

E:\Qt\qt5-deps\icu\dist\include\layout
E:\Qt\qt5-deps\icu\dist\include\unicode
E:\Qt\qt5-deps\openssl-1.0.2d\dist\include\openssl

12. Данный пункт заслуживает отдельного внимания. Не трудно догадаться, что процесс сборки Qt занимает много времени. Эту проблему можно смягчить, если озаботиться обеспечением распараллеливания компиляции. Для этого делаем резервную копию файла E:\Qt\qt-src-5.5.1\qtbase\qmake\generators\makefile.cpp, открываем его для редактирования и правим строку

QString makefilein = " -f " + escapeFilePath(subtarget->makefile);

которая встречается в этом файле 2 раза. Новая редакция строки выглядит, например, так

QString makefilein = " -j9 -f " + escapeFilePath(subtarget->makefile);

Число потоков компиляции в ключе -jN в Вашем случае зависит от количества ядер процессора M. Обычно рекомендуется брать N = M + 1. Если процессор поддерживает технологию Hyper-trheading, то число потоков N = 2 · M + 1.

13. Для удобства создадим пакетный файл E:\Qt\qt-src-5.5.1\config.bat со следующим содержимым

set INCLUDE=E:\Qt\qt5-deps\icu\dist\include
set INCLUDE=%INCLUDE%;E:\Qt\qt5-deps\openssl-1.0.2d\dist\include

set LIB=E:\Qt\qt5-deps\icu\dist\lib
set LIB=%LIB%;E:\Qt\qt5-deps\openssl-1.0.2d\dist\lib

set QMAKESPEC=
set QTDIR=

set PATH=E:\Qt\qt-src-5.5.1\qtbase\bin
set PATH=%PATH%;E:\Qt\qt-src-5.5.1\gnuwin32\bin
set PATH=%PATH%;C:\Qt\mingw-4.9.2\bin
set PATH=%PATH%;E:\Qt\qt5-deps\Strawberry\c\bin
set PATH=%PATH%;E:\Qt\qt5-deps\Strawberry\perl\bin
set PATH=%PATH%;E:\Qt\qt5-deps\Python27
set PATH=%PATH%;E:\Qt\qt5-deps\Ruby21\bin
set PATH=%PATH%;E:\Qt\qt5-deps\icu\dist\bin
set PATH=%PATH%;E:\Qt\qt5-deps\openssl-1.0.2d\dist\bin
set PATH=%PATH%;C:\Tools\Git\cmd
set PATH=%PATH%;%SystemRoot%\System32

set MAKE_COMMAND=

set DXSDK_DIR=E:\Qt\qt5-deps\DXSDK\

configure -prefix C:\Qt\qt-5.5.1 -opensource -confirm-license -platform win32-g++ -release -shared -debug-and-release -c++11 -qt-zlib -opengl desktop -openssl -dbus -iconv -plugin-sql-odbc -nomake tests -nomake examples

Замечания.

Опция -release в команде configure нужна для того, чтобы по умолчанию проекты собирались в конфигурации Выпуск, и при этом не требовалось добавлять в команду qmake параметр CONFIG+=release.

Возможно, что опция -shared включается автоматически и может не указываться явно.

Иногда рекомендуют указывать опцию -developer-build, но при сборке установливаемой Qt 5.5.1, например, она не указывалась.

14. Выполняем в командной строке Windows

cd /D E:\Qt\qt-src-5.5.1
config.bat
mingw32-make
mingw32-make install

Создание qmake и конфигурация сборки библиотеки занимает несколько минут. Непосредственно сборка и установка Qt – от 2-х часов и больше.

15. Добавление ключа -jN в генерируемые qmake скрипты (см. пункт 12) существенно ускоряет сборку проектов, однако, может приводить к выдаче компилятором предупреждений вида

mingw32-make[2]: warning: -jN forced in submake: disabling jobserver mode

Если Вас наличие таких предупреждений не смущает, то можно оставить все как есть и данный пункт инструкции пропустить. Можно убрать этот ключ. Для этого удаляем, сделав резервные копии, файлы:

C:\Qt\qt-5.5.1\bin\qmake.exe
E:\Qt\qt-src-5.5.1\qtbase\bin\qmake.exe

удаляем файлы:

E:\Qt\qt-src-5.5.1\Makefile
E:\Qt\qt-src-5.5.1\qtbase\Makefile
E:\Qt\qt-src-5.5.1\qtbase\qmake\Makefile
E:\Qt\qt-src-5.5.1\qtbase\qmake\*.o

восстановливаем из резервной копии файл E:\Qt\qt-src-5.5.1\qtbase\qmake\generators\makefile.cpp. Выполняем в командной строке Windows

cd /D E:\Qt\qt-src-5.5.1
config.bat

По окончании сборки копируем файл E:\Qt\qt-src-5.5.1\qtbase\bin\qmake.exe в папку C:\Qt\qt-5.5.1\bin. Теперь у Вас есть две версии qmake: одна без ключа -jN, вторая (в резервной копии) с ключом. С первой проекты собираются медленно, но без выдачи предупреждений. Вторая позволяет сэкономить время, благодаря распараллеливанию компиляции, но в процессе сборки проектов, содержащих подпроекты, выдаются предупреждения.

16. Для обеспечения доступности при любых обстоятельствах необходимых библиотек ICU и MinGW копируем в папку C:\Qt\qt-5.5.1\bin файлы:

E:\Qt\qt5-deps\icu\dist\lib\icudt54.dll
E:\Qt\qt5-deps\icu\dist\lib\icuin54.dll
E:\Qt\qt5-deps\icu\dist\lib\icuuc54.dll
C:\Qt\mingw-4.9.2\bin\libgcc_s_dw2-1.dll
C:\Qt\mingw-4.9.2\bin\libstdc++-6.dll
C:\Qt\mingw-4.9.2\bin\libwinpthread-1.dll

Туда же копируем файлы:

E:\Qt\qt-src-5.5.1\qtbase\bin\qt.conf
E:\Qt\qt-src-5.5.1\qtbase\bin\fixqt4headers.pl

17. В завершение соорудим себе привычное окружение. Создаем пакетный файл C:\Qt\qt-5.5.1\bin\qtenv2.bat со следующим содержимым

echo off
echo Setting up environment for Qt usage...
set PATH=C:\Qt\qt-5.5.1\bin;C:\Qt\mingw-4.9.2\bin;%PATH%
cd /D C:\Qt\qt-5.5.1

Создаем группу ярлыков Qt 5.5.1 MinGW 4.9.2 (OpenGL) (папку)

Windows XP:   C:\Documents and Settings\All Users\Главное меню\Программы\Qt 5.5.1 MinGW 4.9.2 (OpenGL)
Windows 7:   C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Qt 5.5.1 MinGW 4.9.2 (OpenGL)

помещаем в нее ярлыки

Assistant
    Объект:   C:\Qt\qt-5.5.1\bin\assistant.exe
    Рабочая папка:   C:\Qt\qt-5.5.1

Designer
    Объект:   C:\Qt\qt-5.5.1\bin\designer.exe
    Рабочая папка:   C:\Qt\qt-5.5.1

Linguist
    Объект:   C:\Qt\qt-5.5.1\bin\linguist.exe
    Рабочая папка:   C:\Qt\qt-5.5.1

Qt 5.5 for Desktop (MinGW 4.9.2 32 bit)
    Объект:   C:\Windows\System32\cmd.exe /A /Q /K C:\Qt\qt-5.5.1\bin\qtenv2.bat
    Рабочая папка:   C:\Windows\system32

Сюда же можно будет поместить и ярлык Qt Creator.

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

 

Это новая редакция статьи, старая редакция доступна по ссылке.