Как стать автором
Обновить

Комментарии 43

Без QML и WebKit не так интерестно. Часто проблемы бывают именно с последним, поэтому открывая статью расчитывал на полную компиляцию.
Да нет никаких проблем, запускаем configure в корне и всё компилируется. Здесь об этом говорилось.
Для QML2 необходим DirectX SDK, а это не всем нужно.
Да если бы было все так просто… Эта жирная скотина, она, она. Ладно.
А смысл тогда на Qt5 переходить? C++11 не используется, Qt Quick 2 не используется, JSON скорее всего не используется. В сухом остатке ровно тоже самое, что и в случае с Qt4 плюс куча времени на сборку.
qt4 уже развиваться не будет, только фиксы. Переход, я считаю, лучше сделать раньше, чем позже. С перспективой на будущие технологии (часть из которых, которые Вы упомянули). Некоторые модули Qt5 еще откровенно сыроваты.
Тогда что мешает на msvc2010 хотя бы перейти и включить C++11? Компилятор в составе sdk вполне себе бесплатный, а разработка как я понимаю всё равно идет в креаторе?
разработка идет в VS2008
НЛО прилетело и опубликовало эту надпись здесь
Можно на MinGW 4.7.2 перейти, я так в конце концов поступил. А 2012 разве ни Windows 8 Only?
НЛО прилетело и опубликовало эту надпись здесь
Нет, на Win7 хорошо работает.
В MSVC2012 есть опции сборки, чтобы можно было собрать под msvc2012-winxp. Судя по информации в интернете, включение такой опции в конфиг сборки qt не предвидится.
А в чем сложность через configure самому эту опцию включить? Я так понимаю это всего лишь пара флагов для компилирования и линковки?
Простой и удобный способ не требовать установки Visual C++ 2008 Redistrubutable package, это таскать с собой 3 файла:
msvcp90.dll, msvcr90.dll и Microsoft.VC90.CRT.manifest

А CRT разве статически нельзя прилинковать?
можно. В каждую qtшную dll по экземпляру CRT? Так никто обычно не делает.
Поясняю — обычно CRT компилируют внутрь если Вы распространяете C++ Runtime вместе с программой.
Не понял ход Ваших мыслей.
Если использовать статическую линковку при компиляции qt (подправив mkspecs), то каждая из qt-шных действительно не будет требовать C++ Runtime, но копия рантайма будет в КАЖДОЙ dll-ке Qt, при этом вашей программе тоже надо будет использовать этот Code Generation, и в Вашем exe тоже будет копия CRT.
В моем случае будет 5 копий CRT
Учитывая сколько потребляет сам Qt — CRT просто мизер + уменьшает проблемы с разделяемыми библиотеками.
Не под embedded же компилируете, и экономить на скрепках тут не имеет смысла.
P.S. скомпилируйте тогда Qt в виде 1ой DLL — типа Qt5.dll (ну кроме плагинов) — тогда будет самое верное решение — 2 копии CRT и нет проблем.
Это нарушение лицензии LGPL

PS. Но можете написать туториал как скомпилировать все в одну DLL ;)
Если Вы НЕ читали LGPL то советую перечитать — делаем ОТДЕЛЬНУЮ DLL и тем самым «Произведение использующее библиотеку Qt + даем ссылку на патч который позволяет сделать такую сборку» — все — проблемы нету.
Напишите туториал, как Вы сделаете всё в одной DLL, без голословия.

Merely the LGPL software-parts need to be modifiable by end-users (via source code availability)
В смысле без голосования?

Поясняю на пальцах — к Qt5.dll прикладываем файл LGPL-SOURCE.TXT где указываем текста патча файла для сборки.

P.S. по поводу поста — без проблем, но из-за кармы меньше 0 написать в профильный хаб не могу. Будет карма +1 или выше — будет пост + сорцы на GitHub.
Замечание: поскольку мне не нужна компиляция qtactiveqt, qtdeclarative, qtwebkit и прочих, а необходима только qtbase (Qt5Core/Qt5Gui/Qt5Network/Qt5Widgets/Qt5Sql/etc) и qttools (assistant, designer, etc), configure я буду запускать только в qtbase, тогда как при полной компиляции библиотеки configure следует запускать в корне.

Достаточно сконфигурировать из корня, а потом запустить nmake с параметром module-qtbase. В этом случае нет необходимости обходить «баг самостоятельной компиляции».

Замечание 2: по умолчанию qt5 пытается использовать OpenGL 2/Angle, для компиляции которого необходим DirectX SDK. Поскольку QML2 и OpenGL2 мне не нужен, я использую опцию configure -opengl desktop, которая скажет QtGui использовать старый opengl32.dll (стандарт OpenGL 1.1, есть в любой Windows XP и выше).

Если не нужны ни Angle, ни QML2, то проще указать -no-opengl
спасибо
update: увы, с -no-opengl не компилируется
Hint 1:
При конфигурации, указав параметр -mp, можно ускорить время сборки, распараллелив ее на все ресурсы процессора.

Hint 2:
Так же полезно указывать -nomake tests -nomake examples, чтобы избежать излишней компиляции.
спасибо!
полезные советы.
А никто еще не сообразил какой-нибудь Qt runtime? Ну типа поставил один раз на машине и все программы юзают. Просто делать пакеты для маленьких программ, запаковывая туда весь Qt, очень большие инсталляшки получаются.
Core/Gui/Network/Widgets при упаковке в инсталляк занимают около 5МБ
А у меня само приложение допустим килобайт 300 занимает. А приложений мне нужно скинуть человеку штук 5 по почте… Надеюсь понятно куда я клоню…
передавайте как ссылку в dropbox/icloud/google drive/etc

хотя если у вас диал-ап, тогда да :)
Не диал-ап, а корпоративная почта, с ограничением в 5 МБ на письмо(
Соберите свой инсталяк\MSI-пакет, который будет разворачиваться в систему и прописывать себя в PATH, тогда другие приложения смогут идти и без библиотек.
Угу, тут вспоминаешь как в первые два года тяжело с дистрибуцией .Net'а дела шли, а ты предлагаешь homebrew в массы продвинуть, еще и остальным девелоперам рассчитывать на то, что оно установлено.
Я думаю внутри отдельной взятой конторы такой способ может прокатит. Все равно продавать этот софт не планируется. Хотя более общий вариант конечно был бы предпочтительней.
Да и в рамках одной, отдельно взятой, конторы это бессмысленно чуть более, чем полностью. Если это dev-машины, с Qt нет проблем. А иметь два варианта дистрибьюции — для мира и для внутрянки — это, имхо, не лучшая трата ресурсов.
Нет, большинство машин не dev и даже не имеют админских прав на установку чего-либо. Причем машины не все в одном месте, а есть и удаленные, в других городах. Ну короче я не знаю как проталкивать по 20 МБ лишнего «мусора» с каждой 300 КБ программкой, да еще и по корпоративной почте.
Ну в первый раз протолкнуть в любом случае придется, а потом лишь обновления. Хотя в вашем случаем можно действительно дистрибуцировать Qt отдельным пакетом, оно будет оправдано.
Core/Gui/Network/Widgets при упаковке в инсталляк занимают около 5МБ
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации