QT发布应用程序exe

文章转载自:https://www.cnblogs.com/CLXiao-1029/p/6892355.html

Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。
因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。

注:在这里以Qt 5.3.2+MinGW开发环境为例,(其他版本类同)

在开始菜单中找到Qt 5.3 for Desktop (MinGW 4.8 32 bit)

这里可以打开 Qt 命令行,从这里就可以执行 windeployqt 工具。

集成开发环境 QtCreator 目前生成图形界面程序 exe 大致可以分为两类:
Qt Widgets Application 和 Qt Quick Application。

下面分别介绍这两类exe 的发布方式。

Qt Widgets Application可执行程序发布方式:
首先用 QtCreator 新建一个 Qt Widgets Application 项目,直接用默认的 QMainWindow 程序就可以了,项目名字假定是 hellomw。
然后以 Release 方式编译生成 exe 程序:

1、 生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:
E:\QT_Data\Clx\05\Clx_ImageProcessor\
它的项目生成目录是

E:\QT_Data\Clx\05\build-Clx_ImageProcessor-Desktop_Qt_5_3_MinGW_32bit-Release\ 
进入这个文件夹,在进入它的子文件夹 release 里面,找到 Clx_ImageProcessor.exe ,
将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 
E:\Clx\fb\ 文件夹里面。

 

然后从开始菜单打开 Qt 命令行,输入命令 :cd /d E:\Clx\fb\
然后使用 windeployqt 工具命令:

windeployqt Clx_ImageProcessor.exe

然后可以在 E: \Clx\fb\ 文件夹里看到 windeployqt 工具自动复制的插件文件夹
和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。

 

把 E: \Clx\fb\ 文件夹 打包就可以发布了,不用自己一个个找 dll 文件了。
E: \Clx\fb\ 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,
其他的都保留。

2、Qt Quick Application发布方式
首先用 QtCreator 新建一个 Qt Quick Application 项目,直接用默认的项目模版,点击下一步生成项目,项目名字假定是 helloqml。
然后以 Release 方式编译生成 exe 程序:

E:\QT_Data\Clx\05\Clx_ImageProcessor\
它的项目生成目录是

E:\QT_Data\Clx\05\build-Clx_ImageProcessor-Desktop_Qt_5_3_MinGW_32bit-Release\

进入这个文件夹,在进入它的子文件夹 release 里面,找到 Clx_ImageProcessor.exe ,将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 E:\Clx\fb\ 文件夹里面。

然后从开始菜单打开 Qt 命令行,输入命令 :cd /d E:\Clx\fb\
然后使用 windeployqt 工具命令:

windeployqt Clx_ImageProcessor.exe --qmldir C:\Qt\Qt5.3.2\5.3\mingw482_32\qml

(注:这是一行代码没有换行)


注意不要跟烧包一样照抄上条命令,--qmldir 是指出 Qt 库里面的 qml 文件夹位置,
上面命令里 C:\Qt\Qt5.3.2 是 Qt 官方开发环境安装的文件夹,
C:\Qt\Qt5.3.2 \5.3\mingw482_32 是Qt类库的目录(QTDIR),
因此使用的 --qmldir 后面写的是 C:\Qt\Qt5.3.2\5.3\mingw482_32\qml
读者Qt环境安装路径不一样,要根据实际情况修改!


然后可以看到 E:\Clx\fb\ 文件夹里有一大堆文件,就是 QtQuick程序需要的依赖文件。
将整个 E:\Clx\fb\ 文件夹 打包就可以发布出去,在别的电脑上使用。这个 E:\Clx\fb\ 文件夹里的东西很多,看不懂就不要删,老老实实打包发布就行了。

上面是最简单的程序发布,实际复杂程序可能还带一些图片文件、数据库文件、配置文件之类的,可以按自己需要添加这些文件到发布文件夹里面。

<think>好的,用户想了解如何使用Qt发布应用程序的方法或步骤。我需要根据提供的三个引用内容来整理答案。首先,用户提到的引用[1]是关于Linux部署工具linuxdeployqt的,它可以将应用程序打包成自包含的包,比如AppImage。引用[2]和[3]则主要针对Windows平台,介绍了windeployqt工具的使用,以及处理依赖关系和路径问题。 用户的需求是发布Qt应用程序,可能涉及不同平台。需要分步骤说明Windows和Linux下的部署方法。首先在Windows部分,应该提到使用windeployqt工具,步骤包括构建Release版本,运行工具,处理QML依赖(如果有的话),以及测试。可能还要提到常见错误,比如缺少dll或路径问题,引用[2]中的错误排查可能有帮助。 然后是Linux部分,使用linuxdeployqt生成AppImage,需要说明下载工具、运行命令以及打包后的测试。这里引用[1]提到了具体的使用方法,需要确保用户知道如何下载和正确使用参数。 跨平台部分可以提到Qt Installer Framework,但引用中没有直接提到,不过根据知识库,可能用户需要知道这一点。另外,注意事项部分要强调Release构建、插件和动态库的处理,比如图像格式插件或者数据库驱动,可能需要手动添加,引用[3]提到部署工具会自动处理Qt相关依赖,但可能需要手动处理第三方库。 生成相关问题需要考虑用户可能遇到的后续问题,比如不同系统的详细步骤、处理依赖问题、打包成安装包的方法,以及如何减少体积。这样用户可以根据自己的需求进一步查找信息。 需要确保回答结构清晰,分步骤说明,并且引用正确的来源。比如在Windows步骤中提到引用[3],在Linux部分引用[1],处理错误时引用[2]。同时要检查是否有遗漏的平台,比如macOS,但引用中没有相关信息,可能暂时不提及,或者简单说明有其他工具。 最后,语言要简洁,避免技术术语过多,让用户能一步步跟随操作。可能用户是开者,但需要明确的指导。确保每个步骤都准确,特别是命令的使用和路径的处理,避免用户出错。</think>根据Qt跨平台部署需求,我将分步骤说明Windows/Linux平台的部署方法,并重点说明依赖项处理要点: ### 一、Windows平台部署步骤(基于windeployqt工具) 1. **构建Release版本** ```bash qmake -config release mingw32-make release ``` *生成exe文件位于release目录* 2. **运行部署工具**[^3] ```powershell windeployqt.exe [EXE路径] --qmldir [QML工程目录] ``` *示例:`windeployqt.exe D:\app\myapp.exe --qmldir D:\src\qml`* 3. **验证依赖文件** ```tree bin/ ├─myapp.exe ├─Qt5Core.dll ├─Qt5Widgets.dll ├─platforms/qwindows.dll └─...其他依赖库 ``` 4. **处理常见错误**[^2] - 缺少`vcruntime140.dll`:安装VS 2015+运行时库 - QML组件缺失:通过`--qmldir`指定QML源文件目录 - 插件路径错误:使用`addLibraryPath()`指定相对路径 ### 二、Linux平台部署(基于linuxdeployqt) 1. **下载部署工具**[^1] ```bash wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod +x linuxdeployqt*.AppImage ``` 2. **生成AppImage包** ```bash ./linuxdeployqt-continuous-x86_64.AppImage [APP路径] -appimage -qmldir=[QML目录] ``` 3. **验证打包结果** ```bash ldd MyApp.AppImage # 检查动态链接库 ./MyApp.AppImage # 直接运行测试 ``` ### 三、跨平台部署注意事项 1. **必须包含的组件** ```markdown - Qt核心库:Qt5Core, Qt5Gui, Qt5Widgets - 平台插件:`platforms`目录下的qwindows/qminimal等 - 图像格式插件:`imageformats`目录的qjpeg/qsvg等 ``` 2. **精简体积技巧** ```bash windeployqt --no-translations # 排除翻译文件 linuxdeployqt --exclude-libs=libicu # 排除不需要的ICU库 ``` 3. **第三方库处理** ```cpp // 在代码中指定相对路径 QApplication::addLibraryPath("./plugins"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值