Qt 在windows下应用程序的图标更改和exe发布

来源:互联网 发布:网络爬虫好学么 编辑:程序博客网 时间:2024/05/16 00:56

1. 概述

当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行。编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装文件。
QT开发的程序发布的时候经常采用两种方式:

  • 静态编译,可生成单一的可执行文件。
  • 动态编译,需同时附上需要的dll文件。

    下面我们以动态编译为例进行说明

2. 发布准备

2.1 设置程序图标(Qt Creator环境)

第一步:创建一个包含图标图像的ICO文件,并将其保存在资源文件目录下,例如命名为:myapp.ico;
第二步:创建一个.rc文件(可以通过新建txt文件修改后缀),包含如下内容:

IDI_ICON1               ICON    DISCARDABLE     "myapp.ico" 

第三步:在工程文件myapp.pro文件中写入如下内容:

RC_FILE = myapp.rc  

重新编译即可。

2.2 编译release版本

注意将运行程序编译方式设置成Release,因为debug版本的程序中包含了调试信息,可以用来调试。而真正要发布程序时,要使用release版本,这样可以减少发布程序的体积同时增加软件的安全。
这里写图片描述

3. 发布程序

Qt官方开发环境默认使用动态链接库方式,在发布生成的可执行程序时,我们需要复制一大堆动态库,如果自己去复制动态库,很可能丢三落四,导致程序在别的电脑里无法正常运行。 因此 Qt 官方开发环境里自带了一个部署工具来帮助开发者自动拷贝大部分的依赖库。在不同的平台使用方式也有所不同。

Windows开发环境下windeployqt工具 (如果你已经将Qt的bin目录加入PATH环境,那么你可以直接在命令行使用windeployqt调用.)。
第一步,将项目中的release文件中的可执行文件拷到一个新建的文件夹中,例如project.exe,用Qt自带的生成必备的dll文件的程序windeployqt,来把必要的动态库拷到该文件夹中;
第二步,开始菜单–》Qt 5.4.0–》5.4–》MinGW 4.9 (32-bit)–》Qt 5.4 for Desktop (MinGW 4.9 32 bit)打开命令行;
第三步,通过cd改变到project.exe的当前目录下:输入

windeployqt project.exe

,这时候大部分的dll文件都自动拷贝过来了。
注:但是如果项目还用了一些其他的SDK,比如OpenCV,Chartdir51等等,就需要手动将所需dll拷贝过来,如果不知道还需要哪些软件,可以用Dependency Walker来查看缺少哪些dll文件。
这里写图片描述

注意:如果发布的应用是Qt Quick Application应用,那么命令行需要加上QML的安装目录。命令中的D:\Qt\Qt5.5.1\qml是qml的安装目录,请换成你自己的qml安装目录!!!!!

windeployqt hello.exe--qmldir D:\Qt\Qt5.5.1\qml

接下来要高大上的朋友就可以用Enigma VirtualBox软件虚拟化工具将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。

注意:如果需要发布出去给别人使用,需要拷贝VS安装目录下的msvcp120d.dll,msvcr120d.dll(根据发布的程序选择debug版本或者release版本)动态库到当前需要发布的程序包根目录。

0 0
原创粉丝点击