Qt windows. Qt запуск приложения под windows. Qt cтатическая сборка. Запуск Qt приложений на других пк.

Транзисторы, резисторы, микросхемы, микроконтроллеры. C/C++, C#, PHP, HTML и пр.

Модератор: KopylovSergey

Ответить
Аватара пользователя
admin
Администратор
Сообщения: 1103
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Qt windows. Qt запуск приложения под windows. Qt cтатическая сборка. Запуск Qt приложений на других пк.

Сообщение admin » 06 дек 2014, 16:29

При запуске Qt приложения на компьютере без установленной QT приложение не работает, при этом нет никаких сообщений об ошибках. Чтобы приложение Qt запустилось, необходимо вместе с ним скопировать все динамические (*.dll) библиотеки, которые использовались при его создании, либо статически слинковать свою программу. В результате статической линковки получиться самодостаточный exe файл.
Надо отметить, что в результате статической линковки размеры exe-файлов существенно возрастают. Например, изначально exe-файл занимал всего 1,38 МБ и требовал различных библиотек в сумме на 43,5 МБ. После описанных процедур он увеличился до 16,1 МБ. Но уже всё, что надо, у него есть.

Видео по статической сборке Qt

Протестировано для: Qt 5.3.2, компилятор MinGW 4.8.2 32bit, Windows 7 64bit. Написано на основе qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW но без использования Windows PowerShell.

Итак, нужно сделать следующее:

1. Скачать и установить:
a) Python
б) Ruby
в) Perl
г) сборку Qt 5.3.2 for Windows 32-bit (MinGW 4.8.2, 737.4 MB) с официального сайта
д) файлы исходников (source code) Qt с официального сайта

2. Проверить, что всё работает правильно
а) запустить Qt Creator, создать новый проект, собрать его, запустить;
б) закрыть Qt Creator и попробовать запустить *.exe отдельно от среды разработки;
в) убедиться в том, что программа требует кучу дополнительных библиотек;
г) закрыть всё, подумать о том, какая сложная штука — жизнь.
Теперь можно идти дальше.

3. Открыть файл С:\Qt\5.3\Src\qtbase\mkspecs\win32-g++\qmake.conf
Если папка Src отсутствует, то создайте папку Src и разархивируйте в неё исходники скаченные в пункте 1.д.
На всякий случай можно сделать бэкап.
Добавить в конец файла (взято из windows-build-qt-static.ps1):

Код: Выделить всё

# Static
QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
DEFINES += QT_STATIC_BUILD
CONFIG += static
# Static
Сохранить изменения и закрыть файл от греха подальше.

4. Создать пустую папку для статической сборки (C:\Qt\5.3\static)
В принципе, она может быть где угодно, главное чтобы была пустая.
Создать в ней файл make.bat с таким содержанием:

Код: Выделить всё

:: !!!check path!!!
set QtDir=C:\Qt\5.3\static
set MingwDir=C:\Qt\Tools\mingw482_32
set QtSrcDir=C:\Qt\5.3\Src
set CMAKE_INCLUDE_PATH=%MingwDir%\i686-w64-mingw32\include
:: Set a clean path including MinGW.
set PATH=%PATH%;%MingwDir%\bin;%MingwDir%\opt\bin
:: Force English locale to avoid weird effects of tools localization.
set LANG=en
:: Set environment variable QT_INSTALL_PREFIX. Documentation says it should be
:: used by configure as prefix but this does not seem to work. So, we will
:: also specify -prefix option in configure.
set QT_INSTALL_PREFIX=%QtDir%
:: Configure, compile and install Qt.
cmd /c "%QtSrcDir%\configure.bat -static -debug-and-release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests" > log_cmd.txt
mingw32-make -k -j4 > log_make.txt
mingw32-make -k -j4 install > log_make_install.txt
pause
Проверить соответствие всех путей до папок "static", "Tools", "Src" . Это действительно важно.
Если всё правильно, сохранить и закрыть файл.

5. Открыть консоль cmd.exe и запустить make.bat
Этот процесс длится примерно час или два, в зависимости от скорости работы компьютера. Если всё завершилось через 5 минут или раньше, то что-то пошло не так.
В файлах log_cmd.txt, log_make.txt, log_make_install.txt можно почитать сообщения об ошибках.


6. Настроить Qt Creator.
Параметры -> Сборка и запуск -> Профили Qt -> Добавить
Выбрать файл С:\Qt\5.3\static\bin\qmake.exe
Название профиля: Qt (static)

Параметры -> Сборка и запуск -> Комплекты -> Добавить
Название: Static
Тип устройства: Desktop
Устройство: Локальный ПК
Sysroot: C:\Qt\5.3\static
Компилятор: MinGW
Отладчик: Не задан
Профиль Qt: Qt (static)


Теперь в Qt Creator доступен комплект статической сборки.
Проекты -> Сборка и запуск -> добавить -> Static

7. В файле проекта (*.pro) добавить флаги

Код: Выделить всё

QMAKE_LFLAGS += -static -static-libgcc
Наверное, как-то можно эти флаги убрать в параметры Qt Creator, но у меня это не получилось.

Это всё. Осталось только пересобрать свой проект с новым комплектом. Теперь можно запускать скомпилированные exe-файлы на любом компьютере под управлением Windows 7 или Windows XP. На других системах не тестировалось.


Взято тут



Ответить