Потребовалось мне тут, что бы 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 комментариев
Не работает:
[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»
Потверждаю, после команды «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>
Попробуйте клонировать с git://code.qt.io/qt/qt5.git
Важно заметить, что
git submodule foreach —recursive «git clean -dfx»
git clean -dfx
нужно запускать из-под папки с исходниками, то есть ещё нужно cd ../qt5
потому что когда файл конфигурации или сборки, пользователь уже в папке build
«Авторизация при простом скачивании не требуется. Вы что-то не так делаете. Огласите код ошибки хотя бы.»
Наверное это был какой-то глюк с авторизацией.Была проблема с питоном,надо его тоже добавить в переменные среды.Но сейчас проблема при компиляции ,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
библиотеки openssl поставились в папку C:\OpenSSL-Win32\bin, в qt нет ничего, хотя бы отдалённо напоминающее «3dparty». подскажете, какой путь нужно прописать после -openssl -I ?
Доброго дня.
Попробуйте скачать не «Light», а полный и переустановить.
Если не заработает — пробовать ставить родной от Qt через его диспетчер обновлений (В папке с установленным Qt, называется вроде «MaintanceTool»). Будет лежать в папке «Qt\Tools\OpenSSL\Win_x86\».
Не работает, в процессе конфигурации, после длительного скачивания каких-то файлов ,вдруг потребовал авторизации на гитхабе,не нашел какой-то файл, и остановился.И процесс сборки не идет,сразу же ошибка .
Авторизация при простом скачивании не требуется. Вы что-то не так делаете. Огласите код ошибки хотя бы.
Здравствуйте. Павел! Объясните ,пожалуйста, как собрать dll-ку на статике. Хочу собрать dll без зависимостей. Но когда собираю в статической сборке то получаются 2 файла с расширением .a и .o А dll-ки нет.
Спасибо за инструкцию, только вопрос как подключить QCharts в эту сборку?
Пожалуйста. К сожалению, я с ними дела пока что не имел, так что подробно подсказать не могу. Скорее всего нужно просто собрать.
Спасибо за такую подробную инструкцию, только появился вопрос! А как добавить библиотеку QCharts в статистическую сборку? Или есть другая хорошая библиотека?
Все прошло на ура. Огромное спасибо. Осталось пара вопросов которые решал методом тыка…
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 и места совсем мало…
Какие пункты оставить при выборе?
Пожалуйста.
1. Если компилятор будет 64х битный, то и все exe шники будут 64 битными.
2. С Питон 3 просто не соберётся
3. Попытаться найти в исходниках Qt где эти папки теперь, т.к. по всей видимости я по старой памяти прописал. Либа OpenSSL должна быть той же разрядности, что и компилятор.
4. У QtCreator вроде бы нет конфигураций разных — он идёт одним пакетом, всё остальное — разные компиляторы и т.д., т.е. выбираете при установке только его, если я Вас правильно понял.
Здравствуйте. Павел!
Я не силен в этом деле, но мне очень нужно сделать эту сборку. Мучаюсь уже второй день.
Можно ли как-то без скачивания исходников с интернета это сделать? У меня плохой интернет.
7z архив с исходниками имеется.
Помогите, пожалуйста!
Доброго дня. К сожалению, ничем больше помочь не могу т.к. буквально недавно пересобирал так же, как в посту написано — всё получилось.
Здравствуйте. Павел!
Объясните ,пожалуйста, зачем для сборки библиотеки Qt5.12 Git, Perl и Python?
И зачем скачивать отдельно компилятор, если он есть в самой библиотеке, в принципе как и python2.7?
Здравствуйте.
Git — качает исходники грубо говоря.
Perl и Python используются при конфигурации.
В данном посте установка идёт именно из исходников, т.е. как таковой самого «фреймворка» то ещё нет — его нужно собрать.