Как c помощью Qt собрать статический exe под windows
Здравствуйте, пишу небольшую программу и столкнулся с проблемой — как под Qt собрать программу в один exe файл. Ну или какие DLL надо положить в дистрибутив, чтобы она работала на других компьютерах.
Локально она работает если в папке с EXE файлом присутствуют
icudt49.dll
icuin49.dll
icuuc49.dll
libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
Причём это всё надергано с форумов (без libEGL.dll она просто молча закрывается)
Однако на других компьютерах работать отказывается. Дебаг версия судя по всему требует vc-redist, но после установки последнего не работает всё равно.
Программа элементарная, пара окошек, никаких специальных библиотек не используется.
Для статической линковки нужно сначала собрать сам Qt из исходников, сконфигурировав его с параметром -static. В ридми и на сайте проекта это достаточно внятно расписано. Но в этом случае могут вылезти проблемы с плагинами и QtQuick.
Если задача не обязательно собрать статически, а просто запустить на другом компе, то помимо прямых DLL-зависимостей необходимо рядом с EXE-файлом ещё создать подкаталог platforms и скопировать туда плагин qwindows.dll из каталога <Qt>\qtbase\plugins\platforms\. Если в программе используются ещё какие-то плагины, аналогично, нужно будет и их скопировать в соответствующие подкаталоги.
Для -static потребуется либо отказаться от ICU (-no-icu), либо скачать исходники ICU и скомпилять их тоже в статическом виде. ANGLE, вроде бы, тоже статику пока не поддерживает, обещают только в 5.1.0. То есть конфигуратору потребуется ещё указать флаг -opengl desktop и надеяться, что на целевом компе установлены драйвера с поддержкой OpenGL 2.0. (Впрочем, тут я точно не скажу, если QML не используется, возможно, фичи OpenGL 2.0 и не потребуются.)