Відео: Qt windows. Qt запуск програми під windows. Qt cтатіческая збірка
Розповім про досвід складання 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 опинилося під силу таким чином:
пояснення: 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 ++ - портирование, розбрід думок, а в мобільному таборі - поки нікого відчутно не приходить. Але подивимося, як буде далі.