腹泻原因

注册

 

发新话题 回复该主题

从零开始学Qt05设置图标打包发布以 [复制链接]

1#
北京白癜风治疗的最好医院 http://baijiahao.baidu.com/s?id=1680518420286668560&wfr=spider&for=pc

当我们用QtCreator开发编译完成一个程序后,通过点击QtCreator界面左下角的“运行(Run)”按钮,能够正常运行程序。但当我们找到编译输出目录,想要双击exe文件直接运行程序时,会报丢失dll文件的系统错误(如图1)。这是由于程序运行所需的各种动态库还没有被包含进去。程序的打包发布就是将程序运行所必需的动态库添加完整的过程。

另外,在没有专门设置图标前,刚开发的程序(如图1中的例子samp1.exe)的图标是一个简单的命令行图标,显得不是很专业,在程序发布之前最好替换成你想要的图标。

图1.直接运行的系统错误

在本篇文章中,我们首先给程序设置一个图标。编译通过后,将程序运行所需的文件打包,以便你能把程序分享给别人或在其他电脑上运行。最后,打包后的文件体积有些大,我研究了一种能精简体积的方法。

一、设置程序图标

设置图标的方法有多种,这里作为小白当然选择一种最简单的方法。

首先准备一个ico图标文件。我在电脑上随便找了一个音乐形状的图标文件,将其复制到项目源文件目录中,并重命名为myico.ico,如图2所示。

图2.准备图标文件

在QtCreator中打开项目文件,在“Edit”界面下,双击打开项目文件“samp1.pro”。在文件末尾,添加一行“RC_ICONS=myico.ico”(注意等号前后各有一个空格)。

图3.编辑项目文件添加图标

重新编译程序并运行。这时编译输出目录中samp1.exe的图标,以及程序运行界面左上角的图标,都已经替换为我们想要的图标了,如图4所示。

图4.添加图标后的结果

二、打包发布程序

为了打包发布程序,首先新建一个文件夹(这里我在Projects下新建了文件夹samp1_pack),然后将想要打包的samp1.exe文件复制到该文件夹中,如图5所示。

图5.准备打包目录

由于我的程序是用MinGW64bit编译器编译的,因此在开始菜单中找到对应版本的Qt命令行工具(不能使用windows自带的cmd),点击运行。在命令界面,首先切换当前目录到打包目录(我的是D:\Qt\Projects\samp1_pack),然后运行打包命令“windeployqtsamp1.exe”。

图6.运行打包命令

命令运行完成后,在资源管理器中打开打包目录,发现除了原来的samp1.exe外,多出了很多dll文件和子目录(除了translations外其余目录中也是dll)。这些多出的东西基本都是动态链接库。对于一个几乎什么也不干的程序,打包后的体积约66MB,确实是不小了。

图7.打包命令运行的结果

三、精简体积

Qt打包命令windeployqt比较全面地将动态库包含进来,但其实有些库是不需要的。想要精简打包文件夹的体积,必须要知道哪些文件是运行所必须的。

在Windows系统中,可以通过一个免费小软件DependencyWalker分析一下动态库的关联性。

分享 转发
TOP
发新话题 回复该主题