一. Windows 发布

1. 引言

QT开发完之后,如果直接把exe文件发给别人,是没法直接用的,因为会提示缺少很多库,一种方法是把这些库拷贝出来,一起发过去,但是这样不方便且文件很大,所以需要一种文件打包发布的方法。

2. 环境

3. 具体步骤

  1. 打开一个QT程序,以release方式运行一次。操作如下图:
    Qt_Windows 打包发布: - 图2

  2. 这时你的工程项目文件夹下,会生成一个关于release的文件夹,打开关于release相关的文件夹,找到该目录下release目录下的.exe程序。此时你点击是运行不成功的。因为缺少QT必要的库文件。
    Qt_Windows 打包发布: - 图3
    将这个.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下,比如桌面的test文件夹里。
    Qt_Windows 打包发布: - 图4

  3. 在开始菜单中,打开QT命令行窗口

Qt_Windows 打包发布: - 图5

Qt_Windows 打包发布: - 图6

接着输入命令行,进入到需要打包的exe程序目录,就是刚才拷贝出来的exe程序所在的目录,如: cd c:\qt_dev\package_build\SDebug\

  1. 输入如下命令行:windeployqt 程序名 敲击回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件:
    Qt_Windows 打包发布: - 图7
    Qt_Windows 打包发布: - 图8

此时,在当前目录下是可以点击运行exe程序的,说明库文件都已经拷贝到当前目录下了。这时就可以执行将这一堆文件进行打包的操作了,需要使用Enigma Virtual Box工具。

  1. 打开运行Enigma Virtual Box
    第一步选择上述的exe文件
    Qt_Windows 打包发布: - 图9

第二步:添加路径和文件如下图。选择所有文件后,注意是要所有文件和文件夹全部拖进。示意图如下:
Qt_Windows 打包发布: - 图10

Qt_Windows 打包发布: - 图11

结果如下:

Qt_Windows 打包发布: - 图12

第3步:点击在【Files Options】中可以选择是否将文件压缩:

Qt_Windows 打包发布: - 图13

第4步:最后点击Process开始打包

Qt_Windows 打包发布: - 图14

Qt_Windows 打包发布: - 图15

生成的testweb_boxed.exe就可以单独使用了。

4. 遇到的问题

在我实际操作过程中遇到了以下2个问题

  1. 提示windeployqt不是内部或外部命令
    Qt_Windows 打包发布: - 图16
    原因是:一开始我电脑里用的不是QT5.x版本,所以它是没有的,装了新版本的就有了。
  2. 提示FaceImport.exe does not seem to be a Qt executable.
    原因是:我装了QT最新版本,但是编译器用的还是老版本,需要改成最新的,就可以了。
    Qt_Windows 打包发布: - 图17

二、Windows下Qt程序添加图标

  1. 使用png图片生成ico图标文件,我这取名为: SDebug.ico
  2. 在项目根目录,创建一个文件,名为 res.rc,内容如下:
  1. IDI_ICON1 ICON DISCARDABLE "SDebug.ico"
  1. 把该文件 res.rc 和 图标文件 SDebug.ico 加入项目中:
    Qt -> 项目右键 -> 添加已存在文件
  2. 在.pro文件中添加如下内容:
  1. RC_FILE = res.rc