Qt之新手打包发布程序
工具:电脑必备、QT下的windeployqt
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\ 文件夹里的东西很多,看不懂就不要删,老老实实打包发布就行了。
上面是最简单的程序发布,实际复杂程序可能还带一些图片文件、数据库文件、配置文件之类的,可以按自己需要添加这些文件到发布文件夹里面。
Qt之新手打包发布程序的更多相关文章
- Qt Package Project 打包发布程序
在Qt项目开发完成后,我们想将项目打包发布成一个可执行文件,需要做如下步骤: 首先,将项目中的release文件中的可执行文件拷到一个新建的文件夹中,例如project.exe,用Qt自带的生成必备的 ...
- Qt for Mac:发布程序(widgets和quick2)
当你用Qt开发好程序后,是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行. 比较幸运的是,Qt ...
- 【golang-GUI开发】Qt项目的打包发布
这是本系列的第三篇文章,前两篇我们讲了qt的安装和编译,今天我们讲一讲程序的打包. 好像我们现在都没怎么讲到qt的使用,因为想要放开手脚写代码,一些基础是要打牢的. 不过请放心,下一篇文章开始我们就会 ...
- Qt ------ linux(ubuntu) 下用 linuxdeployqt 打包发布程序
https://github.com/probonopd/linuxdeployqt/releases 1.下载linuxdeployqt 2.把下载的文件放入 /usr/local/bin 内,并执 ...
- Qt 打包发布程序
利用Qt Creator写好程序,选择对应的编译器编译程序. 编译完成会在项目同级目录生成对应的目录来保存编译后的输出. 打包程序就要选择Qt自带的CMD工具,分别有下面几种. 比如,打包VS2017 ...
- 利用Qt自带工具发布程序
Qt官方开发环境生成的exe发布方式--使用windeployqt 从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 f ...
- java打包发布程序.jar(Eclipse)
1.程序运行无错误后,右击项目名称,选择Export 2.next后,选择启动时的运行项目,选择压缩包的存储路径 3.finishi即可. 4.运行 cmd存储路径下>java -jar XXX ...
- QT5.4 计算器程序 打包&发布,解决dll的最新解决方案
QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一 ...
- QT5.4 计算器程序 打包&发布,解决dll的最新解决方案(图文并茂,很清楚)
QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一 ...
随机推荐
- three.js提供的几何体
1.简单几何体 three.js提供的稍微简单点的几何体包括有:PlaneGeometry(平面).CircleGeometry(圆形).ShapeGeometry(塑性).CubeGeometry( ...
- 关于Java中继承多接口同名方法的问题
在Java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样? 动手做实验: interface A{ void fun(); } interface B{ void fun(); ...
- 点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)
前几天在慕课网上看到一个关于图片缩放的教学视频,因为当时对老师使用img.width,而不是使用img.style.width而感到奇怪,所以周末得空了,想来自己试着写出来,相关视频网址如下:http ...
- 面向对象设计(Object-Oriented Design,OOD)
前言 OOD简介 Shubho:亲爱的,让我们开始学习OOD吧.你了解面向对象原则吗? Farhana:你是说封装,继承,多态对吗?我知道的. Shubho:好,我希望你已了解如何使用类和对象.今天我 ...
- 《快学Scala》——基础
声明值和变量 用val定义的值实际上是常量.用var定义的值是变量.在scala中鼓励使用val.不需要给出值或变量的类型,这个信息可以通过初始化的表达式推断出来.(声明值和变量但不做初始化会报错) ...
- hdu1507 Uncle Tom's Inherited Land* 二分匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1507 将i+j为奇数的构成x集合中 将i+j为偶数的构成y集合中 然后就是构建二部图 关键就是构图 然 ...
- 通过BitSet完成对单词使用字母的统计
什么是BitSet BitSet类实现了一组位或标记(flag),这些位可被分别设置或清除.当需要跟踪一组布尔值时,这种类很有用. 您只需让每一位对应一个值,并根据需要设置或清除即可. 标记(flag ...
- Linux五种IO模型性能分析
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时, ...
- 【转】MyISAM和InnoDB 区别
InnoDB和MyISAM是MySQL最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调 ...
- wifi驱动总结(2)
1.dhd_module_init(驱动模块初始化函数) → dhd_wifi_platform_register_drv(查找设备,注册驱动) → 1) wifi_ctrlfunc_register ...