Потребовалось мне тут, что бы Qt приложение было в одном exe.  Для этого придётся перекомпилировать Qt.

Качаем: Git

Качаем: Perl, версию 32х битную.

Качаем: Python 2 (У меня 2.7).

Качаем: MinGW, y меня 730 (для распаковки нужен 7Zip, запускать «C:\Programm Files (x86)\7-Zip\7zFM.exe»).

Открываем консольку (Win+R, вводим cmd), прописываем необходимые системные переменные (пути замените на свои):

set PATH=C:\MinGW\mingw730_32\bin\;%PATH%
set PATH=C:\Strawberry\perl\bin\;%PATH%

Переходим в папку, в которой будем развлекаться, качаем исходники Qt:

cd C:/QtStatic
git clone https://github.com/qt/qt5
cd qt5
perl init-repository

Конфигурируем:

configure -opensource -confirm-license -platform win32-g++ -static -release -opengl desktop -qt-zlib -qt-libpng -qt-libjpeg -nomake examples
[tip]В конфиге не включён SSL, кому нужно:
Качаем и ставим Win32OpenSSLLite
-openssl -I «c:\Qt\3dparty\openssl-1.0.2m\include» -L «c:\Qt\3dparty\openssl-1.0.2m»
[/tip] [tip] Если вдруг нужно переконфигурировать и пересобрать, то нужно сначала очистить результаты предыдущих потуг:

 git submodule foreach --recursive "git clean -dfx" 
 git clean -dfx
[/tip]

Собираем (Часа 4) и ставим:

mingw32-make -j4
mingw32-make install

После установки настраиваем QtCreator для использования новой версии фреймворка:

В верхней менюшке Инструменты -> Параметры -> Сборка и запуск

Компиляторы -> Добавить
MinGW -> C++
Название: Qt 5.12 Static MinGW
Путь: C:\MinGW\mingw730_32\bin\c++.exe

Отладчики -> Добавить
Название: Qt 5.12 Static DBG
Путь: C:\MinGW\mingw730_32\bin\gdb.exe

Профили Qt -> Добавить
Название: Qt 5.12 Static
Путь: C:\QtStatic\qt5\qtbase\bin\qmake.exe

Комплекты -> Добавить
Название: Qt 5.12 Static
Тип устройства: Desktop
Компилятор C++: Qt 5.12 Static MinGW
Отладчик: Qt 5.12 Static DBG
Профиль Qt: Qt 5.12 Static

 Нажимаем «Применить».

Можно попробовать сделать простенький проект. В параметрах сборки и запуска поставьте «Release» т.к. мы только эту версию собрали. Так же в «*.pro» файл необходимо добавить указание на статическую сборку и линковку libGCC.

QMAKE_LFLAGS += -static -static-libgcc

Ну вот, как-то так =)

19 комментариев

Джо 5 марта 2024 - 0:59

Не работает:
[1/12299] Running syncqt.cpp for module: QtZlib
FAILED: qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp B:/Qt/src/qt5/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp
cmd.exe /C «cd /D B:\Qt\src\qt5\qtbase\src\3rdparty\zlib && B:\Qt\src\qt5\qtbase\bin\syncqt.exe @B:/Qt/src/qt5/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_args && B:\CodeBlocks\gcc-13.2.0-64bit\bin\cmake.exe -E touch B:/Qt/src/qt5/qtbase/src/3rdparty/zlib/ZlibPrivate_syncqt_timestamp»

Reply
EugineM 15 марта 2023 - 15:13

Потверждаю, после команды «perl init-repository»
Скачивает и требует верификации на github, после неудачной попытки выпадает в ошибку

Mesa: mesa-21.3.8
remote: Repository not found.
fatal: repository ‘https://github.com/qt/qtgrpc.git/’ not found
git clone —no-checkout https://github.com/qt/qtgrpc.git qtgrpc exited with status 32768 at init-repository line 207.
Qt::InitRepository::exe(Qt::InitRepository=HASH(0x66b3d4), «git», «clone», «—no-checkout», «https://github.com/qt/qtgrpc.git», «qtgrpc») called at init-repository line 560
Qt::InitRepository::git_clone_one_submodule(Qt::InitRepository=HASH(0x66b3d4), «qtgrpc», «qtgrpc.git», 0, «») called at init-repository line 430
Qt::InitRepository::git_clone_all_submodules(Qt::InitRepository=HASH(0x66b3d4), «qt5», 0, «», «preview», «essential», «addon», «deprecated») called at init-repository line 677
Qt::InitRepository::run(Qt::InitRepository=HASH(0x66b3d4)) called at init-repository line 688

C:\QtStatic\qt5>

Reply
Pavelk 20 марта 2023 - 0:12

Попробуйте клонировать с git://code.qt.io/qt/qt5.git

Reply
Андрей 11 января 2021 - 21:32

Важно заметить, что
git submodule foreach —recursive «git clean -dfx»
git clean -dfx
нужно запускать из-под папки с исходниками, то есть ещё нужно cd ../qt5
потому что когда файл конфигурации или сборки, пользователь уже в папке build

Reply
Николай 17 мая 2020 - 15:10

«Авторизация при простом скачивании не требуется. Вы что-то не так делаете. Огласите код ошибки хотя бы.»
Наверное это был какой-то глюк с авторизацией.Была проблема с питоном,надо его тоже добавить в переменные среды.Но сейчас проблема при компиляции ,error 2.mingw32-make[1]: *** [Makefile:52: sub-src-make_first] Error 2
mingw32-make[1]: Leaving directory ‘C:/QtStatic/qt5/qttools’
mingw32-make: *** [Makefile:426: module-qttools-make_first] Error 2

И при установке тоже error 2.
mingw32-make[6]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d/src/plugins/assetimporters/assimp’
mingw32-make[5]: *** [Makefile:55: release-install] Error 2
mingw32-make[5]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d/src/plugins/assetimporters/assimp’
mingw32-make[4]: *** [Makefile:88: sub-assimp-install_subtargets] Error 2
mingw32-make[4]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d/src/plugins/assetimporters’
mingw32-make[3]: *** [Makefile:62: sub-assetimporters-install_subtargets] Error 2
mingw32-make[3]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d/src/plugins’
mingw32-make[2]: *** [Makefile:209: sub-plugins-install_subtargets-ordered] Error 2
mingw32-make[2]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d/src’
mingw32-make[1]: *** [Makefile:65: sub-src-install_subtargets] Error 2
mingw32-make[1]: Leaving directory ‘C:/QtStatic/qt5/qtquick3d’
mingw32-make: *** [Makefile:283: module-qtquick3d-install_subtargets] Error 2

Reply
клевер 15 мая 2020 - 17:55

библиотеки openssl поставились в папку C:\OpenSSL-Win32\bin, в qt нет ничего, хотя бы отдалённо напоминающее «3dparty». подскажете, какой путь нужно прописать после -openssl -I ?

Reply
Pavelk 16 мая 2020 - 3:55

Доброго дня.
Попробуйте скачать не «Light», а полный и переустановить.

Если не заработает — пробовать ставить родной от Qt через его диспетчер обновлений (В папке с установленным Qt, называется вроде «MaintanceTool»). Будет лежать в папке «Qt\Tools\OpenSSL\Win_x86\».

Reply
Николай 10 мая 2020 - 20:30

Не работает, в процессе конфигурации, после длительного скачивания каких-то файлов ,вдруг потребовал авторизации на гитхабе,не нашел какой-то файл, и остановился.И процесс сборки не идет,сразу же ошибка .

Reply
Pavelk 16 мая 2020 - 3:59

Авторизация при простом скачивании не требуется. Вы что-то не так делаете. Огласите код ошибки хотя бы.

Reply
Александр 3 мая 2020 - 0:04

Здравствуйте. Павел! Объясните ,пожалуйста, как собрать dll-ку на статике. Хочу собрать dll без зависимостей. Но когда собираю в статической сборке то получаются 2 файла с расширением .a и .o А dll-ки нет.

Reply
Сергей 2 января 2020 - 11:05

Спасибо за инструкцию, только вопрос как подключить QCharts в эту сборку?

Reply
Pavelk 2 января 2020 - 18:27

Пожалуйста. К сожалению, я с ними дела пока что не имел, так что подробно подсказать не могу. Скорее всего нужно просто собрать.

Reply
Сергей 1 января 2020 - 18:23

Спасибо за такую подробную инструкцию, только появился вопрос! А как добавить библиотеку QCharts в статистическую сборку? Или есть другая хорошая библиотека?

Reply
Артур 17 ноября 2019 - 11:00

Все прошло на ура. Огромное спасибо. Осталось пара вопросов которые решал методом тыка…
1. Все предустанавлеваемые сервисы имеют 32 и 64 разрядную структуру. win у меня 64, гит уже стоял 64, остальное ставил 32 битное. Это имело смысл или ставить можно что попапо кроме Перла (указана битность)?
2. У меся стоял питон 3, я снес и поставил 2.7 х 32х. Если бы оставил 3 — что то пошло бы не так?
3. С подключением SSL не очень понятно — команда ссылается на несуществующие каталоги
c:\Qt\3dparty; c:\Qt\3dparty\openssl-1.0.2m …?
Что там следует прописать если установка была по умолчание в c:\Program Files (x86)\OpenSSL-Win32\ и про битность соответственно.
4. Главное. Какую конфигурацию ставить креатора? как я понимаю достаточно самой минимальной? У меня SSd и места совсем мало…
Какие пункты оставить при выборе?

Reply
Pavelk 21 ноября 2019 - 3:32

Пожалуйста.
1. Если компилятор будет 64х битный, то и все exe шники будут 64 битными.
2. С Питон 3 просто не соберётся
3. Попытаться найти в исходниках Qt где эти папки теперь, т.к. по всей видимости я по старой памяти прописал. Либа OpenSSL должна быть той же разрядности, что и компилятор.
4. У QtCreator вроде бы нет конфигураций разных — он идёт одним пакетом, всё остальное — разные компиляторы и т.д., т.е. выбираете при установке только его, если я Вас правильно понял.

Reply
Rovshan Gurbanov 2 ноября 2019 - 9:20

Здравствуйте. Павел!
Я не силен в этом деле, но мне очень нужно сделать эту сборку. Мучаюсь уже второй день.
Можно ли как-то без скачивания исходников с интернета это сделать? У меня плохой интернет.
7z архив с исходниками имеется.
Помогите, пожалуйста!

Reply
Pavelk 3 ноября 2019 - 1:42

Доброго дня. К сожалению, ничем больше помочь не могу т.к. буквально недавно пересобирал так же, как в посту написано — всё получилось.

Reply
Я_ли? 10 сентября 2019 - 22:57

Здравствуйте. Павел!
Объясните ,пожалуйста, зачем для сборки библиотеки Qt5.12 Git, Perl и Python?
И зачем скачивать отдельно компилятор, если он есть в самой библиотеке, в принципе как и python2.7?

Reply
Pavelk 9 октября 2019 - 4:47

Здравствуйте.
Git — качает исходники грубо говоря.
Perl и Python используются при конфигурации.
В данном посте установка идёт именно из исходников, т.е. как таковой самого «фреймворка» то ещё нет — его нужно собрать.

Reply

Leave a Comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

You may also like