Очень большой пакет .app, созданный при развертывании приложения Qt в OS X - PullRequest
1 голос
/ 11 июля 2011

Я уже некоторое время использую Qt в Linux и Windows. Однако вчера я взял новый MacBook Pro, поэтому, естественно, я играл, чтобы посмотреть, смогу ли я создать свои приложения Qt на Mac.

У меня почти все работает, но есть одна проблема: размер файла результирующего пакета приложения.

Я создаю свое приложение так:

qmake -spec macx-g++
make
macdeployqt my.app -no-plugins -dmg

Пакет и все работает нормально, но сгенерированный файл .app имеет размер 31,1 МБ, а файл .dmg - 13,6 МБ!

Это нормально? Можно ли уменьшить этот ужасный размер (в Windows мой установщик для того же приложения со всеми библиотеками составляет ~ 4 МБ)?

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Если вы используете предварительно собранные библиотеки Qt, то есть вероятность, что они являются универсальными двоичными файлами с несколькими архитектурами. Например, выполните $ file my.app/Resources/Frameworks/QtCore.framework/Versions/4/QtCore, и вы увидите несколько архитектур.

Вы можете создавать свои собственные библиотеки Qt только с теми архитектурами, которые вы хотите поддерживать. Вы можете не поддерживать PPC, потому что это древний; или если вы используете текущий Qt, то вы можете принять решение 32-битное или 64-битное, но это другой вопрос.

0 голосов
/ 11 июля 2011

Проблема в размере динамических библиотек Qt, так как они должны быть частью вашего пакета.

Эти размеры обычно можно уменьшить.Посмотрите решение Как мне уменьшить размер приложений с помощью qmake и macdeployqt , чтобы узнать, как это сделать.

Отличным обходным решением будет статическая сборка Qt и связывание вашего приложения со статической сборкой.,Обычно это очень хорошая идея , поскольку два приложения, устанавливающие Qt динамически, обычно аварийно завершают работу в Mac OS.Ваше приложение будет со статической сборкой (из моей эксп.) Ок.10-20 МБ размера.В сочетании с описанными выше шагами возможно еще большее сокращение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...