Новость из категории: Информация

Qt 5: сборка

СОДЕРЖАНИЕ:
1. Первые впечатления;
2. Изменения в C++ API и модулях;
3. Сборка (ВЫ ЧИТАЕТЕ ДАННЫЙ РАЗДЕЛ).
Qt 5: сборка
Расскажу об опыте сборки Qt 5. Для этого я использовал виртуальные машины. Под Linux собирал Qt 5 в позапрошлогодней Mageia 1. Особых трудностей не возникло, разве что - долго.

А вот сборка под Windows может оказаться не такой простой. Я много дней пытался достичь работоспособного варианта: чтобы и сама Qt5 скомпилировалась, и программы с ней, и так далее.

В качестве платформы сборки была выбрана Windows XP, чтобы она же и была минимальной версией для запуска программ. В качестве компилятора разработчики Qt советуют MS Visual Studio.

Справедливости ради отмечу, что раньше делал свои сборки Qt в этой среде, но предпочитаю MinGW. Что до Qt 5, то на каком-то этапе я, отчаявшись, пытался скомпилировать её при помощи Visual Studio, но не хватило свободного места на виртуальном жестком диске - такова жизнь...

В Qt 5 вообще довольно интересное положение с предпочитаемым компилятором. Вместо того, чтобы «заточить» библиотеку на сборку с одним компилятором на всех платформах (и выбор был бы в пользу GCC), разработчики пошли другим путем. Для каждой платформы они советуют, каким компилятором собирать: под Windows - Visual Studio C++, под Mac -Clang, под Linux - GCC.

Посему MinGW теперь уделено мало внимания (всего несколько строчек в документации), а раньше в состав Qt входил собственный переделанный вариант MinGW, и Qt собирался на ура. Теперь Qt поставляется без него. Разумеется, можно скачать MinGW отдельно, установить и прописать в системную переменную PATH.

Что же еще потребуется?
> Во-первых, Python - с ним все просто.
> Во-вторых, Perl. Perl для Windows существует в двух вариантах: Strawberry Perl и ActiveState Perl.



При сборки альфа-версии Qt 5 я ставил Strawberry Perl и радовался. Но со сборкой полновесной версии Qt 5 эта радость померкла: на каком-то этапе использования уже собранной Qt 5 оказалось, что MinGW, входящий в состав Strawberry Perl, вступает в конфликт с системным MinGW.

Удалив же Strawberry Perl из системных путей, я получаю неработоспособную qmake из Qt 5 -словом, всё смешалось в доме Облонских... В связи с этим следующие сборки Qt 5 я делал уже при другой инсталляции Perl - ActiveState Perl, - которая включает в себя особую версию MinGW и не конфликтует с системной инсталляцией MinGW.

В этих абзацах сосредоточен горький многодневный опыт попыток сборки Qt 5: подобно средневековому алхимику, я, терпя одну неудачу за другой, подбирал правильную конфигурацию среды и правильный набор параметров для скрипта configure. В моем случае собрать нормальную Qt 5 оказалось под силу следующим образом:
configure.bat -opengl desktop -release -opensource -qt-zlib -no-icu -no-angle ?
-no-vcproj -no-sse4.1 -no-sse4.2 -no-audio-backend -no-qml-debug ?
-no-native-gestures

Пояснения:
> -opengl desktop - не использовать библиотеку ANGLE. Соответственно, не включаем свою программную библиотеку libEGL.dll, libGLESv2.dll;
> -no-angle - для тех же целей;
> -release - не компилируем отладочные версии модулей (сохраняем время и нервы);
> -qt-zlib - используем встроенную в Qt библиотеку zlib (по идее, должно упрощать линковку Qt-программ с zlib, но на деле оказалось фикцией - возможно, пригодится в будущих сборках);
> -no-vcproj - не генерировать проекты для Visual Studio;
> -no-audio-backend - не требуется звук от Qt;
> -no-sse4.1 -no-sse4.2 - даем шанс старым процессорам выполнять код;
> -no-qml-debug - отключение встроенной отладки QML;
> -no-native-gestures - отключение «жестов».

У меня в виртуальной машине сборка длилась около 5 часов. После этого останется внести в системный путь каталог исходник qt5qtbasebin.

Попутно отвечу на вечный вопрос, какие файлы от Qt нужны, чтобы распространять программу в Windows. Для программы, собранной под Qt 5 в версии от Visual Studio, это свой набор файлов (прочитать подробнее можно на http://habrahabr.ru/post/164357). Что же до варианта с MinGW, то надо создать каталог, где будет находиться exe-файл программы, и скопировать в него:
> Каталог imageformats из C:qt5qtbaseplugins (условно говоря). Оставляем в imageformats только файлы плагинов тех графических форматов, которые вам нужны.
> Из C:qt5qtbasebin копируем модули, с которыми собрана ваша программа (например: Qt5Core.dll, Qt5Gui.dll, Qt5PrintSupport.dll, Qt5Widgets.dll, Qt5Xml.dll).

Из состава MinGW копируем libgcc_s_dw2-1.dll, libstdc++-6.dll и mingwm10.dll. Каталог с таким набором файлов будет самодостаточным для запуска вашего .exe.

Заключение

Пока о преимуществах Qt 5 говорить трудно: надо добиться работоспособности существующих программ, портирования их с Qt 4 и сохранения обратной совместимости (по крайней мере, на ближайшие года полтора). Именно это будет занимать программистов, работающих над большими проектами, - да и над портированием малых придется подумать.

Между тем космическая одиссея Qt 5 продолжается: разработчики обдумывают смену систему сборки qmake на какую-нибудь другую, собираются починить QSessionManager, который, по их мнению, сломался в Qt 5 (на деле он сломался гораздо раньше: просто за гонкой в разработке Qt Quick ничего не замечали). Какой реальный шанс у Qt Quick? Если, конечно, не мобильные телефоны с Ubuntu... Где еще? Android? Qt была доступна под Symbian, но кто писал на Qt реальные программы для Symbian?

Qt 5 - рубеж для некоторых разработчиков С++. Могут просто бросить свои программы -не портировать с Qt 4, отказаться. Или портирование займет слишком много времени - вплоть до состояния полного покоя (прекращения разработки). По моему личному опыту, всё это может оказаться слишком трудоемко...

Итак, в лагере программистов на C++ - портирование, разброд мыслей, а в мобильном лагере - пока никого ощутимо не прибывает. Но посмотрим, как будет дальше.

Рейтинг статьи

Оценка
2/5
голосов: 3
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх