1,编译软件的Release版本
开发完Qt 项目后,我们需要将项目进行打包。首先,编译一个Release版本号的软件,此时编译出来的包大小非常小,这是由于一些类库还没打包进去的原因,还处于开发环境。

2,生成app文件
生成app文件需要借助macdeployqt工具,该工具位于Qt安装文件夹的bin文件目录下,如下图所示。

Qt在Mac环境下制作dmg安装包_安装包


macdeployqt使用非常简单,切换到该bin目录下,然后执行./macdeployqt appname.app 即可。例如:

./macdeployqt  /Users/bilibili/qt/build-downloader-Desktop_Qt_5_12_6_clang_64bit-Release/downloader.appmacdeployqt

执行完命令后,就会在appname.app所在文件夹下生成一个新的比較大的app。

3,给app添加icon

开发上一步生成的app,然后右击app,选择显示包内容。

Qt在Mac环境下制作dmg安装包_安装包_02


里面有个叫info.plist的文件,里面记录了非常多这个软件的信息,icon的信息也记录在这里。首先把你制作好的图标icns后缀的文件复制到Resources文件夹下。关于icns制作,可以查看​​《Qt Mac 下软件 icns图标制作》​​,然后编辑Info.plist文件,加上图标信息。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>downloader</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleIconFile</key>
<string>bilibili.icns</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.downloader</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
</plist>

其中,CFBundleIconFile 对应的值就是图标的名称。当然,做完这步发现app的图标还是默认的,没有更改成我们想要的图标。此时右击app,选择显示信息(GetInfo),然后把icns文件拖到左上角的图标位置。

Qt在Mac环境下制作dmg安装包_bundle_03

4,生成dmg安装包

接下来,我们看一下怎么通过 Disk Utility 生成dmg安装包。打开finder-应用程序-实用工具-磁盘工具,然后创建一个空白的dmg镜像,如下图。

Qt在Mac环境下制作dmg安装包_bundle_04

系统默认会创建一个大小为100MB的dmg镜像,最终制作出来的dmg文件会自己主动裁剪掉空白的。然后,右击这个空白的dmg镜像,会打开一个空白的窗体。

Qt在Mac环境下制作dmg安装包_bundle_05


然后在dmg镜像程序的空白处右击,选择【查看显示选项】,然后选择图片,并将准备好的图片拖到方框里面,如下图。

Qt在Mac环境下制作dmg安装包_安装包_06


将上面制作好的app拽到空白镜像dmg里面,再做一个Applications快捷方式(右键–>Make Alias),将做好的dmg,转换一下就完毕了。