В поддержку Qt

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

   

Главная

Статьи:

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

Установка MinGW

Установка Qt 4

Установка Qt 5

Сборка 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.0.1

 

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

Как показано в публикации, распараллеливание компиляции может существенно сократить время сборки проектов Qt на компьютере с многоядерным процессором. Одним из способов применительно к MinGW на платформе Windows является пересборка qmake таким образом, чтобы он включал в сценарии сборки Makefile распознаваемый утилитой mingw32-make ключ -jX, где X – число одновременно выполняемых потоков компиляции. Данная статья рассматривает решение этой задачи для Qt 5.0.1.

Далее для определенности будем полагать, что библиотека Qt установлена в папку C:\Qt\Qt5.0.1\5.0.1\mingw47_32. Основная сложность – пересобрать qmake так, чтобы ничего не нарушить в конфигурации установленной библиотеки, а для этого надо знать с какими опциями библиотека была сконфигурирована. Эту информацию можно найти в файле C:\Qt\Qt5.0.1\5.0.1\mingw47_32\mkspecs\qconfig.pri, содержимое которого приведено ниже.

CONFIG+= release rtti qpa
QT_ARCH = i386
QT_HOST_ARCH = i386
QT_CPU_FEATURES =
QT_HOST_CPU_FEATURES =
QT_EDITION = OpenSource
QT_CONFIG += debug_and_release build_all debug release c++11 shared zlib icu angle png freetype build_all accessibility opengl opengles2 egl openssl audio-backend native-gestures qpa iconv concurrent minimal-config small-config medium-config large-config full-config
#versioning
QT_VERSION = 5.0.1
QT_MAJOR_VERSION = 5
QT_MINOR_VERSION = 0
QT_PATCH_VERSION = 1

Речь идет о строке

QT_CONFIG += ...

Некоторые опции включаются автоматически, а некоторые из них следует указывать явно при вызове команды конфигурации.

Для сборки потребуются следующие инструменты

исходники Qt 5
MinGW 4.7
(должен уже быть установлен вместе с библиотекой Qt)
ActivePython
Strawberry Perl
DirectX Software Development Kit
(DXSDK)

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

Windows SDK for Windows 7 and .NET Framework 4

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

Microsoft .NET Framework 4

DXSDK непосредственно в сборке qmake не используется, но конфигуратор библиотеки проверяет его наличие. Если он отсутствует, то qmake не будет собран так, как надо.

Рассмотрим пошагово порядок действий, он очень похож на представленный в вышеупомянутой публикации.

1. Создаем папку

C:\Qt\qt-5-deps

в которую будем устанавливать все компоненты, необходимые для сборки qmake.

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

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

устанавливаем в папку

C:\Qt\qt-5-deps\Python27

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

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

устанавливаем в папку

C:\Qt\qt-5-deps\strawberry

4. Скачиваем Microsoft .NET Framework 4 по ссылке, онлайн установщик

dotNetFx40_Full_setup.exe

устанавливаем в папку по умолчанию

C:\Program Files\Microsoft.NET

5. Скачиваем 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, должно помочь.

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

DXSDK_Jun10.exe   571 MB

устанавливаем в папку

C:\Qt\qt-5-deps\DXSDK

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

No, I would not like to participate

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

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

распаковываем его в папку

C:\Qt

Итак, исходные файлы библиотеки теперь лежат в папке

C:\Qt\qt-everywhere-opensource-src-5.0.1

в ней же и будет происходить сборка qmake. Для удобства переименуем эту папку во что-нибудь более короткое, например

C:\Qt\qt-5.0.1

8. Делаем резервную копию файла

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.

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

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\Qt5.0.1\Tools\MinGW\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%;%SystemRoot%\System32

set DXSDK_DIR=C:\Qt\qt-5-deps\DXSDK\

set MAKE_COMMAND=

configure -prefix C:\Qt\Qt5.0.1\5.0.1\mingw47_32 -opensource -confirm-license -platform win32-g++ -release -shared -debug-and-release -c++11 -qt-zlib -icu -angle -opengl es2 -openssl -iconv -plugin-sql-odbc -nomake tests -nomake examples -no-vcproj

10. Запускаем терминал Windows (см. Пуск > Все программы > Стандартные > Командная строка) и вводим команды

cd \Qt\qt-5.0.1
config.bat

Сборка qmake займет несколько минут. По окончании следует убедиться, что библиотека сконфигурирована правильно, заглянув в созданный файл C:\Qt\qt-5.0.1\mkspecs\qconfig.pri.

11. Делаем на всякий случай резервную копию файла C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\qmake.exe и заменяем его вновь собранным C:\Qt\qt-5.0.1\bin\qmake.exe.

Теперь все должно заработать так, как задумано.

Замечания.

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

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

Иногда рекомендуют указывать опцию -developer-build, но при сборке установленной библиотеки она не указывалась, иначе в файле qconfig.pri среди других присутствовала бы запись private_tests.