Развертывание приложения QT на OS X и Linux - PullRequest
3 голосов
/ 30 января 2010

Каков наилучший способ развертывания приложения QT? Я прочитал документацию, размещенную на trolltech, но лучше ли связать ее со статической библиотекой или динамическими библиотеками и попросить пользователя установить платформу? Я действительно не хочу, чтобы кто-то, использующий мое приложение, загружал 160-мегабайтный фреймворк только для запуска простого графического интерфейса.

Ответы [ 3 ]

3 голосов
/ 31 января 2010

В OS X это хороший способ динамической сборки и последующей обработки получившегося «.app» с помощью инструмента macdeployqt, который поставляется с Qt, начиная с 4.5.

Это скопирует фреймворки Qt, используемые вашим приложением, в комплект приложения, что приведет к созданию пакета большего размера, чем сборка статической версии вашего приложения.

Вот что вы можете сделать, чтобы получить наименьший размер файла, возможно, при динамической сборке:

  • Прежде всего, убедитесь, что вы включили только то, что вам нужно (в QT += core gui network xml строках файла project.pro).
  • Откройте комплект приложений и удалите все ненужные «подключаемые модули Qt» из комплекта. macdeployqt автоматически компилирует все подключаемые модули Qt, что может быть довольно громоздким.
  • Убедитесь, что вы создаете свое приложение в режиме release . В противном случае ваше приложение может быть связано с библиотеками отладки инфраструктуры Qt4, и они действительно большие (например, более 90 МБ для библиотеки отладки по сравнению с 16 МБ для вариант выпуска без отладочных символов). Это может быть то, что произошло в вашем случае.
  • Если у вас большой двоичный файл приложения, вы можете использовать UPX для сжатия исполняемого файла на 40-50%.

Кроме этого, вы должны использовать сжатые образы дисков для развертывания приложения.

Один из моих проектов использует QtGui , QtNetwork , QtCore и QtXml , а размер полученного пакета составляет около 16 МБ.

Надеюсь, это поможет.

2 голосов
/ 31 января 2010

К сожалению, вам придется включить библиотеки Qt, которые вам нужны, в ваш собственный пакет, так как вы не можете ожидать, что ваши пользователи установят Qt на Mac (тогда как в пакетных системах Linux вам потребуется по крайней мере определенная версия Qt.

Существует хороший инструмент, который поможет вам в этом, который называется macdeployqt. Вам просто нужно вызвать его в своем приложении-пакете, и оно упакует необходимые библиотеки, изменив связь вашего бинарного файла для ссылки на них. Без этого создание пакетов для Mac - это настоящая боль (но это все же значительно, но значительно меньше).

http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool

После этого вы можете создать изображение .dmg, как и в любом другом приложении. В macdeployqt есть опция, которая создает базовую.

2 голосов
/ 30 января 2010

В Linux лучше полагаться на копию ОС Qt, поскольку она почти наверняка установлена ​​- для OS X почти все приложения используют статически скомпилированную библиотеку.

...