Pull to refresh

Comments 36

UFO just landed and posted this here
Каюсь, я сначала даже подумал, что это какой-то кривой перевод )
Для четвертых версий Qt рекомендовали использовать jom для быстрой многоядерной сборки, сильно сокращало время. Не пробовали?
Еще, наверное, можно cmake'ом (оно должно уметь им конфигурироваться) создавать проекты для msbuild, а не nmake, msbuild достаточно новая разработка, должен хорошо параллельно собирать.
Командой set CL=/MP мы указываем, скорее всего, утилите nmake что у нас несколько ядер:

К сожалению, не утилите nmake, а лишь компилятору cl
Достаточно сконфигурировать с "-mp" (только для msvc компилятора).
Я собирала jom-ом, но правда версию Qt 4. Подтверждаю, действительно очень быстро собирается
На официальном сайте тоже предлагается использовать jom, но правда:
Note however, that it has issues with module interdependencies, which can cause builds to fail.

И я что-то побоялся — уже устал от ошибок компиляции.
Если и вправду быстрее, может зря побоялся?..
не знаю, билдил 2012 студией еще 19 декабря, когда Qt 5.0.0 вышел!, не было таких проблем, только когда добавляешь в Qt Creator — ругался ворнингом, что The compiler 'Microsoft Visual C++ Compiler' 11.0 (x86) can not produce code for the Qt version 'Qt 5.0.0, но всё билдилось и запускалось без каких-либо проблем.

Умеете привлечь названием.
UFO just landed and posted this here
«Нужны перл, питон и руби».
А почему не еще 20 скриптовых языков? Что мешало построить систему сборки на одном?
Просто на машинах девелоперов всё это обычно ставится 1-2 строками в консоли, так что никто не заморачивался возможностью их отсутствия.
Это не сама Qt, это WebKit. Если его отключить, то весь этот зоопарк не нужен
Понятно, спасибо. Уже нашел ответ, а комментарий ниже отредактировать не успел.
Попробуйте сконфигурировать без perl'а :)
Вопрос, чем обосновано требование не использовать Express версию? компилятор же тот же самый, разве нет?
Это же только для работы аддона, правильно?
И еще странно: я релиз не собирал, но собирал бету и RC под VS2010, обходилось без Ruby, в официальных вики тоже про него ничего нет. Вы это где нашли? Для вебкита что ли нужен?
Всё верно, Ruby для вебкита.
Компилятор тот же самый. К тому же, для сборки Qt будет достаточно одного компилятора из поставки Windows SDK,
т.е. установка самой IDE не обязательна.
в Express версии не идут некоторые хедеры, без них не собрать
Интересно, как же я вчера это на Expresse сделал, хм…
если Windows SDK есть — то естественно
на тему D3DCOMPILER_46.dll
blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx
это компонент DirectX — установите его Runtime в SxS и будет все отлично

Папка с исходными файлами выросла с 700 – 800 Мб, до 10 Гб!
и раньше так было

Этот параметр определяет будущее ваших будущих приложений на Qt (не знаю как сказать по-другому). Если он указан (хотя, по-моему, определен по умолчанию) то все собранные приложения будут зависеть от наличия установленных библиотек на машине. То есть с переносом даже на соседский компьютер будет беда. Для сборки независимых приложений следует указывать -static. Но будущие приложения существенно вырастут в размере (10 кб против 10 мб в простой программе helloworld с GUI)
epic *facepalm*
1) компилируете Qt с встраиваемыми icu и внешними библиотеками
2) переносите Qt*5.dll и все

Для сборки независимых приложение -static — только в том случае если оно некоммерческое — т.к. Qt под двойной лицензий EULA/LGPL — а static тем самым уже несовместима с LGPL

Не на 10MB а на размер подключенных общих библиотек, однако хорошо сжимается тем-же UPX. Если только QtCore — то где-то 7MB, если еще WebKit и Photon — то все 25MB

По какой-то непонятной мне причине designer и assistant из этой сборки не запускаются
Dependency Walker и нет проблем ;)

Я не знаю, сколько длилась сборка, час, два или больше, но при попытке собрать qtwebkit утилита nmake вывалилась из-за отсутствия какого-то win_flex.

Если Вас забанили в Google — то помогаю https ://codereview.qt-project.org/#change,43190 (пробел убрать — т.к. хабрапарсер неверно иначе парсит URL)
win_flex — это утилита из GNU Tools Binary Component
Только не надо советовать UPX (аналоги) использовать, пожалуйста. Он абсолютно бессмыслен, если дистрибутив пожат LZMA (к примеру), более того, UPXнутые Qt*5.dll после упаковки в инсталлер или 7z архив дадут прирост порядка 5-10% (в зависимости от комплекта), что с точки зрения дистрибуции глупо, ибо все стремятся как раз к минимизации дистрибутива.
На винде при стандарной установке Qt 5.0.1 + VS 2010 для запуска приложения (QtGui+QtWidgets) в директории с приложением должны быть:
1) директория platforms с файлами qwindows.dll и qminimal.dll
2) Библиотеки аппаратного (и не очень) ускорения рисования интерфейса: D3DCompiler_43.dll, libEGL.dll, libGLESv2.dll
3) три библиотеки ICU: icudt49.dll, icuin49.dll и icuuc49.dll
4) Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll и так далее, всё как раньше с Qt4.
При невыполнении пунктов 1 или 2 программа будет просто закрываться без выдачи ошибок.

Подробно написано на qt-project.org/doc/qt-5.0/qtdoc/deployment-windows.html
qminimal — это просто пример для создания таких плагинов. Для запуска приложения он не нужен. Достаточно только qwindows.dll
Спасибо за список, я-то как дурак выяснял все зависимости при помощи depends.exe, при этом определить необходимость platform-плагинов было весьма нетривиально…

Вот ещё беда, у меня icudt49.dll весит ажно 17 мегабайт! Больше, чем Qt5Сore, Qt5Gui и Qt5Widgets вместе взятые! Не знаете, как с этим можно побороться, отключить ICU? А то как-то грустно выходит, что ради маленькой утилитки на 200 Кб тянется 30+ Мб библиотек.
Конечно можно! configure -no-icu. Только ICU всё равно приятная вещь: она правильно форматирует даты и числа по локали, правильно переводит между регистрами, даёт полноценные юникодные регулярные выражения, даёт правильные переносы строк в языках без пробелов и так далее.
Папка с исходными файлами выросла с 700 – 800 Мб, до 10 Гб!
make clean должно исправить ситуацию.
Но будущие приложения существенно вырастут в размере (10 кб против 10 мб в простой программе helloworld с GUI).

Вы замеряли? Для Qt 5 с теми же настройками? Тогда это очень неплохой результат, учитывая, что стандартные библиотеки со стандартными настройками весят ~40 МБ (из них половина на ICU).
Я тестил — ответ НЕТ. Static сборка позволяет вырезать лишние модули которые не задействуются, для ICU можно отключить часть языков — размер будет меньше.
Например теже модули MS Visual C++ Runtime компилируют в динамике — другой вопрос — ЗАЧЕМ? Их вполне можно скомповать в каждый модуль (благо размер небольшой)
«собирал qtwebkit уже часов 8 к ряду.»

Вот это вы терпеливый. Я бы не выдержал и получаса и взял бы нормальную виртуальную винду на амазоне и собрал бы все за полчаса.
Можете об этом подробнее рассказать?
Sign up to leave a comment.

Articles