Название: Модульная структура 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 Название: 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 ... ... и т.п. Идея думаю ясна :) А у меня QtGui4.dll - 7.2 мб (Qt 4.6) и 6.7 мб для 4.5.3 :P Попробуйте MS VC++ Express Edition, а не mingw :) Это не панацея :) Название: 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 ) |