Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Ноябрь 11, 2009, 12:37



Название: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 11, 2009, 12:37
Доброго всем времени суток!

Как вы (граждане форума прогоргру :) ) думаете, можно ли сделать Qt4 модульной?

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

т.е. сделать такую возможность на этапе сборки самой библиотеки Qt4 , так, чтобы можно было выбирать между тем как есть сейчас и между вариантом модульной структуры.

не пробовал ли кто обращаться в Нокиа с этим предложением?

ЗЫ: не хочется для простого приложения (аппликухи) таскать еще и громоздкие либы от Qt4 :)


Название: Re: Модульная структура Qt4
Отправлено: pastor от Ноябрь 11, 2009, 12:39
Так Qt4 и есть модульная. Зачем таскать все библиотеки, тоскай только то что нужно для работы приложения.


Название: Re: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 11, 2009, 13:14
Цитировать
Так Qt4 и есть модульная. Зачем таскать все библиотеки, тоскай только то что нужно для работы приложения.
Дык размер большой !!!

Например QtGui4.dll около 11.3Мб !

А вот если к примеру разбить его на еще более мелкие либки:
- QtGuiBase - мелкая обязательная либка, которая предоставляет функционал от которого зависят все остальные либки в ГУИ
- QtGuiLayouts
- QtGuiSpacers
- QtGuiButtons
- QtGuiItemViews
- QtGuiItemWidgets
- QtGuiContainers
...
...
и т.п.

Аналогично и с QtNetwork4.dll :
- QtNetworkBase
- QtNetworkTCPSockets
- QtNetworkUDPSockets
- QtNetworkTCPServers
...
...
и т.п.

Идея думаю ясна :)


Название: Re: Модульная структура Qt4
Отправлено: lit-uriy от Ноябрь 11, 2009, 13:17
Есть возможность собрать Qt только из тех частей которые тебе нужны (тык (http://www.forum.crossplatform.ru/index.php?showtopic=981&view=findpost&p=17186))
Но тут нужно пересобирать Qt.

Другой вариант инклюдить нужные файлы, т.е. так, как это сделано в qmake (он не зависит от библиотек Qt)


Название: Re: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 11, 2009, 13:42
Цитировать
Есть возможность собрать Qt только из тех частей которые тебе нужны (тык)
Но тут нужно пересобирать Qt.

аа, всё, вспомнил тему :)

Цитировать
Другой вариант инклюдить нужные файлы, т.е. так, как это сделано в qmake (он не зависит от библиотек Qt)
Ок, буду смотреть

Спс


Название: Re: Модульная структура Qt4
Отправлено: pastor от Ноябрь 11, 2009, 16:46
Дык размер большой !!!

Пожми UPX-ом


Название: Re: Модульная структура Qt4
Отправлено: crackedmind от Ноябрь 17, 2009, 21:19
Цитировать
Так Qt4 и есть модульная. Зачем таскать все библиотеки, тоскай только то что нужно для работы приложения.
Дык размер большой !!!

Например QtGui4.dll около 11.3Мб !

А вот если к примеру разбить его на еще более мелкие либки:
- QtGuiBase - мелкая обязательная либка, которая предоставляет функционал от которого зависят все остальные либки в ГУИ
- QtGuiLayouts
- QtGuiSpacers
- QtGuiButtons
- QtGuiItemViews
- QtGuiItemWidgets
- QtGuiContainers
...
...
и т.п.

Аналогично и с QtNetwork4.dll :
- QtNetworkBase
- QtNetworkTCPSockets
- QtNetworkUDPSockets
- QtNetworkTCPServers
...
...
и т.п.

Идея думаю ясна :)

Если Qt и разобьют на более мелкие модули, то только не раньше Qt 5 :) Ибо бинарная совместимость...
А у меня QtGui4.dll - 7.2 мб (Qt 4.6) и 6.7 мб для 4.5.3 :P Попробуйте MS VC++ Express Edition, а не mingw :)

Дык размер большой !!!

Пожми UPX-ом
Это не панацея :)


Название: Re: Модульная структура Qt4
Отправлено: zenden от Ноябрь 18, 2009, 00:13
Не пойму, а что, компилятор не в состоянии выкинуть из сборки неиспользуемые классы? (я говорю о статической линковке)
Почему программа весит стольо непозволительно много при статической сборке?


Название: Re: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 18, 2009, 08:22
Цитировать
Если Qt и разобьют на более мелкие модули, то только не раньше Qt 5 Улыбающийся Ибо бинарная совместимость...
Так я имею ввиду дополнительную возможность собрать Qt4 динамически с разбитием на мелние шаред либы. т.е. по умолчанию - пусть есть как есть, но чтобы ввели дополнительный ключь сборки, при котором соберется иначе... Неужели в этом такая проблема?

Цитировать
Не пойму, а что, компилятор не в состоянии выкинуть из сборки неиспользуемые классы? (я говорю о статической линковке)
Почему программа весит стольо непозволительно много при статической сборке?
Хз. :)


Название: Re: Модульная структура Qt4
Отправлено: Igors от Ноябрь 18, 2009, 15:02
Цитировать
Не пойму, а что, компилятор не в состоянии выкинуть из сборки неиспользуемые классы? (я говорю о статической линковке)
Почему программа весит стольо непозволительно много при статической сборке?
Хз. :)
А что "Ха"? Правда это задача линкера но суть та же, почему нет?


Название: Re: Модульная структура Qt4
Отправлено: lit-uriy от Ноябрь 18, 2009, 15:32
Igors, не "Ха", а "Хз" - "Хто бы знал"


Название: Re: Модульная структура Qt4
Отправлено: Igors от Ноябрь 18, 2009, 15:52
Igors, не "Ха", а "Хз" - "Хто бы знал"
Пардон, шрифт мелкий, ошибся :)


Название: Re: Модульная структура Qt4
Отправлено: lit-uriy от Ноябрь 18, 2009, 16:15
к стати вопрос действительно интересный, "что мешает линкеру", либо "как ему объяснить", чтобы он оставил в бинаре (при статической сборке) только необходимые вещи?


Название: Re: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 18, 2009, 16:32
По моему - никак не получится, если только - при создании аппликаций - подключать не статические библиотеки Qt4 - а исходники (классы) этой самой Qt4.
Тогда подключится то, что нужно и ничего более.. ИМХО ))

Наверное потому еще, что линкуются то объектники целиком... т.е. единственный выход - ИМХО делать кучу маленьких объектников и выбирать при линковке нужные из них... При этом получается то ради чего я создал тему :)


Название: Re: Модульная структура Qt4
Отправлено: Igors от Ноябрь 18, 2009, 16:36
к стати вопрос действительно интересный, "что мешает линкеру", либо "как ему объяснить", чтобы он оставил в бинаре (при статической сборке) только необходимые вещи?
Я на X-Code (тот же gcc 4) Qt библиотеки динамические (просто др. не нужно). Но вообще я всегда для релиза включаю опцию линкера DEAD_CODE_STRIPPING, и размер становится намного меньше


Название: Re: Модульная структура Qt4
Отправлено: pastor от Ноябрь 18, 2009, 16:39
Гляньте вот этот топик: http://www.prog.org.ru/topic_3974_0.html


Название: Re: Модульная структура Qt4
Отправлено: kuzulis от Ноябрь 18, 2009, 16:45
Порылся... Вот тут : http://forum.osdev.org/viewtopic.php?f=13&t=19267

пишут, что для gcc можно использовать флаги : --strip-all --gc-sections

вот еще чо нашел: http://utilitybase.com/article/show/2007/04/09/225/Size+does+matter:+Optimizing+with+size+in+mind+with+GCC
(смотреть Removing dead code )