win10控制台编译并打包Qt GUI程序

本文以我的本科毕设(基于Qt的聊天软件)为例,讲一下如何在控制台编译Qt程序,并打包发布。

控制台编译过程

1.在win10开始菜单找到以下内容,点击打开控制台

2.切换到项目所在目录

其中我的项目整体结构如下:

3.写好项目的pro文件,例如,我这个项目的pro文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2019-04-22T16:13:03
#
#-------------------------------------------------

QT       += core gui sql network multimedia

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QQ
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

HEADERS += 
    mainui.h 
    leftbar.h 
    database.h 
    clientsocket.h 
    settingswnd.h

SOURCES += 
    main.cpp 
    mainui.cpp 
    leftbar.cpp 
    database.cpp 
    clientsocket.cpp 
    settingswnd.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += 
    resource/login_ui/login_ui.qrc 
    qss.qrc 
    icons.qrc

RC_ICONS = exe.ico #exe图标文件

include($$PWD/basewidget/basewidget.pri)
include($$PWD/cell/cell.pri)
include($$PWD/comapi/comapi.pri)
include($$PWD/login/login.pri)
include($$PWD/midbar/midbar.pri)
include($$PWD/rightbar/rightbar.pri)
include($$PWD/titlebar/titlebar.pri)

DESTDIR         = $$PWD/release/QQ
#OBJECTS_DIR     = $$PWD/release/obj
#MOC_DIR         = $$PWD/release/moc
#UI_DIR          = $$PWD/release/ui
#RCC_DIR         = $$PWD/release/rcc

4.在刚才的控制台执行以下命令
qmake QQ.pro

这时候控制台输出如下:

可以观察到,项目文件夹中多了以下文件:

5.接下来我们用mingw对刚刚生成的makefile执行make操作,该过程使用以下命令:
mingw32-make

由于我的项目比较大,所以这个过程执行时间较长(花了3分钟)。
在编译过程中,输出了很多warning,但是没有error,所以就是编译成功。

可以看到,编译完成之后,在release目录下生成了exe文件,如下所示:

这个生成exe文件的目录是在刚才那个pro文件中指定的,如下所示:
DESTDIR = $$PWD/release/QQ

6.接下来我们双击这个exe文件,发现报错,原因是缺少相应的dll文件。

控制台打包发布过程

1.在刚才我们那个控制台切换到生成的exe文件的目录下,使用以下命令自动打包:
windeployqt QQ.exe

控制台输出如下信息:

C:UsersXJXDesktopQQ
eleaseQQ>windeployqt QQ.exe
C:UsersXJXDesktopQQ
eleaseQQQQ.exe 32 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Direct dependencies: Qt5Core Qt5Gui Qt5Network Qt5Sql Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5Network Qt5Sql Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5Network Qt5Sql Qt5Svg Qt5Widgets
Updating Qt5Core.dll.
Updating Qt5Gui.dll.
Updating Qt5Network.dll.
Updating Qt5Sql.dll.
Updating Qt5Svg.dll.
Updating Qt5Widgets.dll.
Updating libGLESV2.dll.
Updating libEGL.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Updating libgcc_s_dw2-1.dll.
Updating libstdc++-6.dll.
Updating libwinpthread-1.dll.
Patching Qt5Core.dll...
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/bearer.
Updating qgenericbearer.dll.
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/iconengines.
Updating qsvgicon.dll.
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/imageformats.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjpeg.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/platforms.
Updating qwindows.dll.
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/sqldrivers.
Updating qsqlite.dll.
Updating qsqlodbc.dll.
Updating qsqlpsql.dll.
Creating directory C:/Users/XJX/Desktop/QQ/release/QQ/styles.
Updating qwindowsvistastyle.dll.
Creating C:UsersXJXDesktopQQ
eleaseQQ	ranslations...
Creating qt_ar.qm...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...
Creating qt_zh_TW.qm...

C:UsersXJXDesktopQQ
eleaseQQ>

接着我们可以看到原来QQ.exe目录下多了很多dll文件,如下所示:

现在我们再双击这个exe文件试试

我们发现,exe已经能打开了。

原文地址:https://www.cnblogs.com/njuxjx/p/13809503.html