Сборка 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.
|