Пятница, 2024-04-26
Сборник компьютерных технологий
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2021 » Июль » 18 » Статическая сборка Qt используя MinGW32 (сборка в один exe)
Статическая сборка Qt используя MinGW32 (сборка в один exe)
1:49 AM

Сборка Qt

О сборке Qt можно говорить бесконечно. Однако я ограничусь примером минималистичной сборки. Итак, мне нужен GUI, com port.

Я уверен, что все заметили, когда делали deploy своей программы через windeployqt.exe, программа зависит от разных динамических и библиотек Qt. Вследствие чего, развертка на других компьютерах становится неудобной. Почему? Приходится держать сам exe'шник в папке с нужными библиотеками. Разумеется, можно умудриться и без статической линковки решить эту проблему. Согласитесь, неудобно, да и каждый раз нужно лишние телодвижения делать. Проще один раз запариться и потом не делать лишних движений. Еще один плюс статической линковки — размер файла. При динамической линковке сам exe'шник весит примерно от 1 МБ до 7-8 МБ, а с окружением до 70 МБ может спокойно дойти, даже если проект небольшой. При статически собронном Qt есть только exe'шник, который весит примерно в 2 раза меньше, чем окружение при динамической линковке.

Для сборки необходимы:

Git
Qt — Qt 5.x — MinGW x.x.x 32 bit
Qt — Qt 5.x — Sources
Qt — Tools — MinGW
Perl
Python 3

Получить MinGW можно очень просто из-под online установщика Qt с сайта производителя. При удалении программы жмём Изменить и выбираем нужную версию компилятора.



Сборка программы обычно подразумевает выполнение правила out-of-source build. Не рекомендую пытаться проводить манипуляции вне родительского каталога! Итак, имеем базовый каталог QtFromGit, перейдем в него в консоли. Далее будем следовать инструкции Разместим каталог build для сборки (в нём будет собираться мусор от компилятора) и каталог build_artifacts для результата сборки, где и будет лежать вожделенный qmake, если сборка пройдёт успешно.

Рисунок 1. Структура каталогов для сборки Qt

Скачаем в QtFromGit Qt:

git clone git://code.qt.io/qt/qt5 qt5
cd qt5
git checkout 5.15

Далее проинициализируем репозиторий, указав, какие модули нам (не) нужны. Название модулей в системе сборки пишется в одно слово, все буквы строчные. Если вы впервые используете Qt и не понимаете, что вам нужно, лучше скачайте Qt на ПК и освойтесь.

perl init-repository --module-subset=default,qtcharts,qtserialport,-qtactiveqt,-qtcanvas3d,-qtdocgallery,-qtfeedback,-qtserialbus,-qtconnectivity,-qtdeclarative,-qtquickcontrols2,-qtsvg,-qtquickcontrols,-qtwebengine,-qtwayland,-qtandroidextras,-qtdoc,-qtgraphicaleffects,-qtqa,-qttranslations,-qtvirtualkeyboard,-qtquicktimeline,-qtquick3d,-qtrepotools,-qttools,-qtshadertools,-qtimageformats,-qtnetworkauth,-qtwebsockets,-qt5compat,-qtmqtt,-qtopcua,-qtscxml,-qt3d,-qtsensors,-qtquicktimeline,-qtmultimedia,-qtdatavis3d,-qtscript,-qtgamepad,-qtlottie,-qtmacextras,-qtremoteobjects,-qtlocation,-qtspeech,-qtwebchannel,-qtwebglplugin,-qtwebview,-qtwinextras,-qtpurchasing,-testsuites,-qtxmlpatterns

Редактируйте файл qmake.conf, который находится в D:\Qt\5.х.х\static\Src\qtbase\mkspecs\win32-g++. В самый конец файла, после строки load(qt_config) допишите с новой строки эти команды:

QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= O2
DEFINES += UNICODE QT_STATIC_BUILD

Далее необходимо инициировать окружение для сборки Qt. В powershell или cmd выполните батник
5.15.2\mingw81_32\bin\qtenv2.bat
(разумеется у вас могут быть другие номера версий)

Рисунок 2. Ответ командной строки после успешной инициализации окружения для сборки Qt

Далее необходимо вызвать файл configure.bat в примере ниже он вызывается по полному пути на моей машине. В некоторых источниках также предлагают передать флаг -platform win32-g++ Но у меня и без него отлично работает, возможно этот флаг имеет значение при кросскомпиляции.. Я же компилирую под винду на винде... Запускать конфигурацию нужно, находясь в папке build.
cd ../build
"C:\Users\test\Downloads\myQtFromGit\qt5\configure.bat" -release -static -opensource -make libs -nomake examples -nomake tests -confirm-license -skip webengine -skip qtwayland -skip qtdoc -skip qtgraphicaleffects -skip qtqa -skip qttranslations -skip qtvirtualkeyboard -skip qtquicktimeline -skip qtquick3d -skip qt3d -skip qtrepotools -skip qttools -skip qtimageformats -skip qtnetworkauth -skip qtwebsockets -skip qtactiveqt -skip qtmacextras -skip winextras -skip qtmultimedia -skip qtgamepad -skip qtserialbus -skip qtspeech -skip qtsensors -skip qtcharts -skip qtlocation -opengl desktop -no-ssl -prefix ../build_artifacts

В консоли пропишем команду сборки
mingw32-make -k -j6

В консоли пропишем команду установки
mingw32-make install

Теперь можем прописать наш новый qmake.exe в Qt Creator. Сначала на вкладе Qt Versions, потом на вкладке Kits.

Просмотров: 321 | Добавил: DungeonLords | Теги: Статическая сборка Qt | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Календарь
«  Июль 2021  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright Forcer, Inc © 2024
    Бесплатный конструктор сайтов - uCoz