Russian Qt Forum
Ноябрь 27, 2024, 18:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Модульная структура Qt4  (Прочитано 11133 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Ноябрь 11, 2009, 12:37 »

Доброго всем времени суток!

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

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

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

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

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

ArchLinux x86_64 / Win10 64 bit
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Ноябрь 11, 2009, 12:39 »

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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Ноябрь 11, 2009, 13:14 »

Цитировать
Так Qt4 и есть модульная. Зачем таскать все библиотеки, тоскай только то что нужно для работы приложения.
Дык размер большой !!!

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

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

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

Идея думаю ясна Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Ноябрь 11, 2009, 13:17 »

Есть возможность собрать Qt только из тех частей которые тебе нужны (тык)
Но тут нужно пересобирать Qt.

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

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Ноябрь 11, 2009, 13:42 »

Цитировать
Есть возможность собрать Qt только из тех частей которые тебе нужны (тык)
Но тут нужно пересобирать Qt.

аа, всё, вспомнил тему Улыбающийся

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

Спс
Записан

ArchLinux x86_64 / Win10 64 bit
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Ноябрь 11, 2009, 16:46 »

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

Пожми UPX-ом
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
crackedmind
Гость
« Ответ #6 : Ноябрь 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 Показает язык Попробуйте MS VC++ Express Edition, а не mingw Улыбающийся

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

Пожми UPX-ом
Это не панацея Улыбающийся
Записан
zenden
Гость
« Ответ #7 : Ноябрь 18, 2009, 00:13 »

Не пойму, а что, компилятор не в состоянии выкинуть из сборки неиспользуемые классы? (я говорю о статической линковке)
Почему программа весит стольо непозволительно много при статической сборке?
« Последнее редактирование: Ноябрь 18, 2009, 00:16 от zenden » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Ноябрь 18, 2009, 08:22 »

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

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

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Ноябрь 18, 2009, 15:02 »

Цитировать
Не пойму, а что, компилятор не в состоянии выкинуть из сборки неиспользуемые классы? (я говорю о статической линковке)
Почему программа весит стольо непозволительно много при статической сборке?
Хз. Улыбающийся
А что "Ха"? Правда это задача линкера но суть та же, почему нет?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Ноябрь 18, 2009, 15:32 »

Igors, не "Ха", а "Хз" - "Хто бы знал"
Записан

Юра.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Ноябрь 18, 2009, 15:52 »

Igors, не "Ха", а "Хз" - "Хто бы знал"
Пардон, шрифт мелкий, ошибся Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Ноябрь 18, 2009, 16:15 »

к стати вопрос действительно интересный, "что мешает линкеру", либо "как ему объяснить", чтобы он оставил в бинаре (при статической сборке) только необходимые вещи?
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #13 : Ноябрь 18, 2009, 16:32 »

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

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

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Ноябрь 18, 2009, 16:36 »

к стати вопрос действительно интересный, "что мешает линкеру", либо "как ему объяснить", чтобы он оставил в бинаре (при статической сборке) только необходимые вещи?
Я на X-Code (тот же gcc 4) Qt библиотеки динамические (просто др. не нужно). Но вообще я всегда для релиза включаю опцию линкера DEAD_CODE_STRIPPING, и размер становится намного меньше
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.156 секунд. Запросов: 23.