![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Litkevich Yuriy |
![]()
Сообщение
#31
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#32
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Немножко заморочился на тему создания и извлечения zip архивов средствами Qt. Посмотреть что из этого вышло можно тут http://vingrad.ru/blogs/sabrog/2009/03/20/...s-zip-arhivami/
|
|
|
AD |
![]()
Сообщение
#33
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
SABROG, напиши, пожалуйста, тут о тех двух функциях-то!
![]() |
|
|
SABROG |
![]()
Сообщение
#34
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
SABROG, напиши, пожалуйста, тут о тех двух функциях-то! ![]() В Qt 4.5 если классы, которые используются для поддержки Open Document Format, среди них есть классы для работы с .zip архивами. В документации о них не слова и классы по сути только для внутреннего использования. Нас интересуют классы QZipReader и QZipWriter. Чтобы можно было их использовать надо: - в .pro файле добавить это:
- в хедеры прописать пути:
Использовать так: //распаковка архивов
С сжатием сложнее, но принцип такой:
Сообщение отредактировал SABROG - 20.3.2009, 15:27 |
|
|
AD |
![]()
Сообщение
#35
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
![]() |
|
|
SABROG |
![]()
Сообщение
#36
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
В Qt есть недокументированные кроссплатформменные функции qgetenv() и qputenv() для получения и установки переменных окружения.
Описаны в <QtCore/QtGlobal> Использовать на свой страх и риск. Сообщение отредактировал SABROG - 20.3.2009, 17:15 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#37
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]() ![]()
Сообщение
#38
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
![]() Для тех кто помешан на обезжиривании Qt. Вместе с исходниками Qt для мобильных систем поставляется утилита QConfig, которая позволяет отключать возможности (features). ![]() При этом утилита сама смотрит за зависимостями и отключает зависимые компоненты. Дистрибутивы для win и *nix идут без этой утилиты. Поэтому, чтобы воспользоваться данной утилитой нам понадобится скачать общий дистрибутив Qt для всех платформ. Сделать это можно в .torrent репозитории http://dist.trolltech.com/torrents/ Качать надо это: http://dist.trolltech.com/torrents/qt-all-...5.0.zip.torrent Сразу скажу, что у меня уже стояла Qt собранная статически, поэтому я просто зашел в папку $(QTDIR)/tools/qconfig и вбил заветные команды:
После этого я получил в папке release готовую утилиту. Я её залил сюда (3Mb): http://filebeam.com/b143c6b3d9bb05976e6ab1ea2fed7756 Далее запускаем её, не важно откуда. Появится диалог выбора файла. Надо выбрать файл $(QTDIR)/src/corelib/global/qfeatures.txt Затем снимаем галки, которые нам не нужны и сохраняем в файл $(QTDIR)/src/corelib/global/qconfig-НАШЕИМЯ.h Расположение и имя файла должно быть именно таким иначе он не найдется. Затем используем не документированный для виндовых/линуксовых дистрибутивов, но существующий ключ -qconfig таким образом:
Дальше собираем как обычно. В аттаче я прикрепил свою конфигурацию, не уверен, что она оптимальная или правильная. Проверил на примере /examples/widgets/calculator. В обычном статике размер: 7,14 МБ (7 494 656 байт) C теми же ключами но после редактирования через qconfig: 6,19 МБ (6 496 256 байт) UPX сжал exe файл до : 2,34 МБ (2 463 232 байт) Для сравнения обычная (shared) сборка, сумма всех файлов в папке: 13,1 МБ (13 779 036 байт) --- Я пошел дальше в своих изысканиях и решил собрать Qt с оптимизацией по размеру. Отредактировал файл $QTDIR/mkspecs/win32-g++/qmake.conf и заменил строчку: Цитата QMAKE_CFLAGS_RELEASE = -O2 на Цитата QMAKE_CFLAGS_RELEASE = -Os Проделал ту же операцию, что и раньше. Теперь пример calculator.exe сжатый UPX'ом весит: 1,99 МБ (2 095 104 байт) Хоть и в ущерб скорости (оптимизация убрала выравнивание страниц), зато в пользу размера. Еще бы, есть разница 13Мб и 1,99Мб ![]() --- Немного погуглив нашел еще пару ключей для компилятора, которые прописал тоже в qmake.conf Цитата -fmerge-all-constants -fno-default-inline -fno-inline -ffunction-sections -fdata-sections -Wl,--gc-sections Новый рекорд: 1,86 МБ (1 951 744 байт) Но есть побочный эффект. Простейшие примеры линкуются около минуты. В общем экспериментируйте. Сообщение отредактировал SABROG - 22.3.2009, 20:59 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#39
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
любопытно
|
|
|
SABROG |
![]()
Сообщение
#40
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 4:32 |