Qt 5: збірка

Відео: Qt windows. Qt запуск програми під windows. Qt cтатіческая збірка

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.

Що ж ще потрібно?
gt; По-перше, Python - з ним все просто.
gt; По-друге, 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

пояснення:
gt; -opengl desktop - не використовувати бібліотеку ANGLE. Відповідно, не включаємо свою програмну бібліотеку libEGL.dll, libGLESv2.dll;



gt; -no-angle - для тих же цілей;
gt; -release - НЕ компілюємо налагоджувальні версії модулів (зберігаємо час і нерви);
gt; -qt-zlib - використовуємо вбудовану в Qt бібліотеку zlib (по ідеї, повинно спрощувати лінковку Qt-програм з zlib, але на ділі виявилося фікцією - можливо, стане в нагоді в майбутніх збірках);
gt; -no-vcproj - НЕ генерувати проекти для Visual Studio;
gt; -no-audio-backend - не потрібно звук від Qt;
gt; -no-sse4.1 -no-sse4.2 - даємо шанс старим процесорам виконувати код;
gt; -no-qml-debug - відключення вбудованої налагодження QML;
gt; -no-native-gestures - відключення «жестів».

У мене в віртуальній машині збірка тривала близько 5 годин. Після цього залишиться внести в системний шлях каталог исходник qt5qtbasebin.

Попутно відповім на вічне питання, які файли від Qt потрібні, щоб поширювати програму в Windows. Для програми, зібраної під Qt 5 у версії від Visual Studio, це свій набір файлів (прочитати докладніше можна на https://habrahabr.ru/post/164357). Що ж до варіанту з MinGW, то треба створити каталог, де буде знаходитися exe-файл програми, і скопіювати в нього:
gt; Каталог imageformats з C: qt5qtbaseplugins (умовно кажучи). Ми залишаємо в imageformats тільки файли плагінів тих графічних форматів, які вам потрібні.
gt; З 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 ++ - портирование, розбрід думок, а в мобільному таборі - поки нікого відчутно не приходить. Але подивимося, як буде далі.

ІНШЕ

Ctp 5 для visual studio 2015 фото

Ctp 5 для visual studio 2015

Представники Microsoft повідомили про доступність версії 5 Community Technical Preview (CTP 5) для Visual Studio 2015.…

Clang і llvm - у gcc є конкурент фото

Clang і llvm - у gcc є конкурент

Відео: GCC or LLVM? Зв`язку Clang і LLVM часто згадують як заміну GCC - не зараз, але в перспективі. Що ж таке Clang і…

Qt 5: зміни в c ++ api і модулях фото

Qt 5: зміни в c ++ api і модулях

Відео: Qt5 C ++ - QTimer Взагалі склалося враження, що розробники Qt 5 доклали багато зусиль, щоб програмісти С ++…

Xara xtreme фото

Xara xtreme

Відео: Малюємо візитку. Урок Xara Xtreme Xara Xtreme for Linux (зображення з сайту проекту) Згадаймо Xara Xtreme for…

Sdl + mingw = дружба! фото

Sdl + mingw = дружба!

Відео: SDL 2 Tutorial 1c [SETUP] Windows and MinGW Setup Мабуть, SDL - найпопулярніша бібліотека для створення…

Установка bugzilla фото

Установка bugzilla

Відео: Bugzilla installation steps Система є додатком, яке реалізовано на мові Perl, і використовує для зберігання…

Sdl: збірка за допомогою make фото

Sdl: збірка за допомогою make

Відео: C. Урок 12. Компіляція і система збирання (gcc, make)Етап 4. Складання за допомогою make Наведу мінімальний…

Установка sdl фото

Установка sdl

Відео: Tutorial: Setup SDL for Visual Studio 2012Етап 2. Python і Scons Цей етап знадобиться тільки для зборки за…

Ardour 3: збірка фото

Ardour 3: збірка

Відео: Basic mixing in Ardour 3: Part 2 - Importing files, arranging tracks and overviewing the session Ardour 3…

Установці linux unified kernel фото

Установці linux unified kernel

Відео: Linux - Установка Linux Mint поруч з Windows. (BIOS & UEFI) Приступимо. На сторінці завантажень доступні…

Труднощі з phonon фото

Труднощі з phonon

Відео: TAG: новонароджені - ТРУДНОЩІ ПЕРШОГО МІСЯЦЯ! MNOGOMAMA Я не хочу повторювати документацію і приводити якісь…