Статическая линковка Qt 5.x.x с MinGW32 в Windows (сборка в один exe’шник)
Доброго времени суток, хабравчане!
Я уверен, что все заметили, когда делали деплой своей программы через windeployqt.exe, программа зависит от разных динамических и qt’шных библиотек. Вследствие чего, развертка на других компьютерах становится неудобной. Почему? Приходится держать сам exe’шник в папке с нужными библиотеками. Разумеется, можно умудриться и без статической линковки решить эту проблему. Согласитесь, неудобно, да и каждый раз нужно лишние телодвижения делать. Проще один раз запариться и потом не делать лишних движений. Еще один плюс статической линковки — размер файла. При динамической линковке сам exe’шник весит примерно от 1 МБ до 7-8 МБ, а с окружением до 70 МБ может спокойно дойти, даже если проект небольшой. При статической линковке есть только exe’шник, который весит примерно в 2 раза меньше, чем окружение при динамической линковке.
Для сборки необходимы:
- Qt 5.x.x с включенными компонентами (если Qt уже был установлен, нужные компоненты можно установить с помощью Qt Maintenance Tool):
- Qt — Qt 5.x — MinGW x.x.x 32 bit
- Qt — Qt 5.x — Sources
- Qt — Tools — MinGW
- Perl (Strawberry Perl, к примеру). Я использую strawberry-perl-5.30.2.1-32bit.
Проверить, что путь к исполняемому файлу Perl прописан в переменной окружения PATH. Этот пункт можно пропустить, но лучше проверить. - Python 3.8
Путь установки Qt неважен, у меня он установлен на диске D. Убедитесь, что объем доступной памяти вам хватит. Нужно как минимум 30 ГБ свободного места.
- Переходите в директорию, где папка Src (D:\Qt\5.x.x\Src);
- Там создайте папку static (D:\Qt\5.х.х\static);
- Папку Src копируйте в папку static. Получится D:\Qt\5.x.x\static\Src. Дальнейшие действия будут там, в Папке Src;
- Создайте папку mingwXX_32 (у меня, например, mingw73_32). Получится D:\Qt\5.x.x\static\mingwXX_32;
- Редактируйте файл qmake.conf, который находится в D:\Qt\5.х.х\static\Src\qtbase\mkspecs\win32-g++.
В самый конец файла, после строки load(qt_config) допишите с новой строки эти команды:
Командная строка MinGW будет выдана как Qt 5.x.x (MinGW x.x.x 32-bit)
set LANG=en
cd /d %QT_INSTALL_PREFIX%\..\Src (именно такая строка без изменений)
Тут стоит обратить внимание на опцию -no-ssl — это значит что Qt будет собран без поддержки SSL.
Если никаких ошибок нету, можно продолжать:
Нереально длительный процесс, можете смело забыть про него на 4 часа ориентировачно, от скорости чтения/записи диска не зависит, а зависит от процессора. Там где -j4 вместо 4 поставьте число ядер вашего процессора.
В результате получаем статическое окружение в D:\Qt\5.x.x\statiс\mingwXX_32;
- В верхнем меню Инструменты -> Параметры -> Профили Qt
- Добавить -> D:\Qt\5.х.х\static\mingw73_32\bin\qmake.exe -> Применить
- Комплекты -> Добавить
- Название: Qt static x32 (или какое угодно)
- Тип Устройства: Desktop
- Устройство: Локальный ПК
- Корень образа: D:\Qt\5.х.х\static
- Компилятор:
a) для С: MinGW x.x.x 32-bit for C
b) для С++: MinGW x.x.x 32-bit for C++ - Профиль Qt: Qt static x32 (название профиля, которое вы указали при добавлении профиля)
- Применить -> Ок
Дополнительная информация. У меня:
- Qt 5.14.1
- MinGW 7.3.0 32-bit (mingw73_32)
- Python 3.8 x32
- strawberry-perl-5.30.2.1-32bi
- Windows 10 Pro x64
Полет нормальный.
Брал информацию отсюда:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Qt windows статическая сборка
Статическая сборка проекта Qt под Windows.
Отвязка проекта, сделанного в Qt, от .dll зависимости.
При создании проекта релиза, программа не будет запускаться на другом компьютере без дополнительных библиотек. Это не очень удобно, потому как при потере даже одной, ваш знакомый не увидит ваше творчество. К тому же, они придают программе дополнительный размер. И это тоже минус.
Смотрим данное видео.
Пошаговая настройка статической сборки Qt для Windows:
1. Скачиваем Qt c http://www.qt.io/download-open-source/#section-2 (Открывается в новом окне)
2. Устанавливаем Qt. При установке нажимаем кнопку «Выбрать все»
3. Переходим в папку C:\Qt\ Qt5.5.0 \ 5.5 \Src\qtbase\mkspecs\win32-g++\ ( Подчеркнутое — Изменить под свою версию)
4. Редактируем qmake.conf
5. Переходим в папку Qt\ Qt5.5.0 \ 5.5 \Src\qtbase\ ( Подчеркнутое — Изменить под свою версию)
6. Прямо в папке qtbase создаем батник Install.bat с кодом, который написан внизу или копируем уже готовый.
Код батника (Install.bat):
Внимание! на строчку
set PATH=c:\Qt\Qt5.5.0\5.5\mingw492_32\bin;c:\Qt\Qt5.5.0\Tools\mingw492_32\bin;%PATH% Измените Qt5.5.0\5.5 на свою версию.
8. Запускаем батник, соглашаемся с лицензией, нажимаем «y» и ожидаем окончании работы.
По окончании выполнения батника, делаем следующее:
9. Запускаем Qt Creator.
10. Переходим «Инструменты» -> «Параметры» -> «Сборка и запуск» -> «Qt Versions» и нажимаем «Добавить»
11. Добавляем путь C:\Qt\ Qt5.5.0\5.5 \Src\qtbase\bin\qmake.exe ( Подчеркнутое — Изменить под свою версию)
12. Для большей удобности в «Название профиля» дописываем Static. Жмем кнопку «Применить».
13. Переходим в «Комплекты» и нажимаем «Добавить»
14. Меняем «Название» на Static.
15. В «Профиль Qt:» меняем на новый профиль «Qt 5.5.0 (Src) Static». Жмем кнопку «ОК» или «Применить».
Все готово. Теперь проверяем на простой программе и приступаем к программированию.
Qt windows статическая сборка
Подписаться на канал:
Воспроизведение звукового файла wav на C++ | Программирование С++
Воспроизводим звуковой файл wav на С++
Простой кейлоггер на С++ (Keylogger) | Программирование С++
Пишем простой кейлоггер (keylogger) на С++. Режим видимый и невидимый.
Кейлоггер (keylogger) — программное обеспечение или аппаратное устройство, регистрирующее различные действия пользователя — нажатия клавиш на клавиатуре компьютера, движения и нажатия клавиш мыши и т. д.
Из ComboBox в текстовый файл *.txt на C++ (Пример 1) | Программирование С++
Создаем текстовый файл txt. Выбранные данные из ComboBox переносим в текстовый файл txt и сохраняем на языке C++
Удалить пробелы в Edit на С++ | Программирование С++
Удаляем пробелы в Edit.
Открыть документ Word на С++ | Программирование С++
Есть какой-то документ Word. Открываем его на С++.
Принимаем электронную почту на С++ | Программирование С++
Принимаем письма с электронного почтового ящика своей программой на С++.
Перемещаем график по листку в Excel на C++ | Программирование С++
Создаем график в Exccel. Перемещаем его по листку нашей книги.
Узнать разрядность операционной системы на C++ | Программирование С++
Узнаем разрядность операционной системы (64 или 32 битная) на C++
Слушаем онлайн радио при помощи библиотеки BASS на C++ | Программирование С++
Самый простой способ прослушать онлайн радио через интернет при помощи библиотеки BASS на C++
Из ComboBox в текстовый файл *.txt на C++ (Пример 2) | Программирование С++
Создаем текстовый файл txt. Выбранные данные из ComboBox переносим в текстовый файл txt и сохраняем на языке C++. Далее, добавляем еще одну строку с данными в этот же тестовый файл из ComboBox.
Воспроизведение и остановка звукового файла MP3, MP2, MP1, OGG, WAV, AIFF при помощи библиотеки BASS на C++ | Программирование С++
Воспроизведение и остановка звукового файла MP3, MP2, MP1, OGG, WAV, AIFF при помощи библиотеки BASS на C++