QTcreator打包mac应用

首先制作Release包

在Qt Creator中 Projects->Build->Build Settings中选择 Build configuration为Release模式,然后Build,会在Build directory目录中生成对应的.app文件

一般默认的保存目录是你项目所在文件的同级目录,比如

编译完成后,只需要在release目录下找到bin目录下的app文件,一般点击是可以打开运行的

第二制作.app

当前生成的.app文件还不能直接发布,因为app使用的各种依赖库并没有包含在app中,所以需要进行额外的流程将对应的依赖库打包进来

Qt自带有一个打包工具macdeployqt可以帮助实现这个目标

一般在Qt5.12.11/5.12.11/clang_64/bin目录下就有macdeployqt的脚本文件

如果不配置环境变量就直接到这个bin目录下执行

./macdeployqt 你的app文件目录 app名字.app

 执行完成后会发现,之前包大小相对很小的app文件瞬间大了很多,然后运行app,看是否能正常打开,如果顺利就可以正常打开了,如果有bug请看下一步

第三解决文件丢失或者 his application failed to start because no Qt platform plugin could be initialized.的问题

如果是缺少文件,在电脑上找到对应的dylib文件,如果是第二个错误,只需要在QT的安装目录

例如/Qt5.12.11/5.12.11/clang_64/plugins/platforms

复制platforms下所有文件到app文件的(包内容下的)Contents下的Frameworks文件下

如果没有对应文件夹自己新建一个,如果少资源就放入Resource目录下即可

再次用执行

./macdeployqt 你的app文件目录 app名字.app

如果还报错循环以上步骤,直到可以正常运行;

第三制作dmg镜像

./macdeployqt 你的app文件目录 app名字.app -dmg

打包出的dmg后接下来就是将dmg文件压缩成zip包或者直接发布即可

错误解决

打包的dmg,在自己电脑上可以运行,但是发给测试后打开安装报如下错

Dyld Error Message:
  dyld: Using shared cache: 4A889CE9-8D7E-304E-A5F7-84D819B0BF9C
Library not loaded: /usr/local/Cellar/nettle/3.7.2/lib/libnettle.8.dylib
  Referenced from: /Volumes/:xxxxx:mac:bsconnect/bsconnect.app/Contents/Frameworks/libhogweed.6.dylib
  Reason: image not found

意思是,应用需要的libnettle.8.dylib库原本是在报错的这个路径下,但是运行的时候别人电脑是没有这个路径的,所以报错了,打开Contents/Framworks的时候发现libnettle.8.dylib是在里面的,所以只需要用install_name_tool重新指定一下路径即可

install_name_tool oldpath newpath /app路径/Content/MacOS/应用名

例如:

错误显示这个libhogweed.6.dylib的库依赖了 libnettle.8.dylib

那我们用命令查看一下,如图

otool -L /Users/xxxx/Desktop/baishan/bsvpn/vpn_client/mac/bsconnect.app/Contents/Frameworks/libhogweed.6.dylib

 可以看到确实引用了这个依赖库,并且路径也是报错信息上面的路径

这就好办了,只需要用install_name_tool -change命令修改他的引用路径即可

正常引用的路径应该是图示这样的 @executable_path/../Frameworks/libnettle.8.dylib

所以需要执行的命令行如下

install_name_tool -change /usr/local/Cellar/nettle/3.7.2/lib/libnettle.8.dylib @executable_path/../Frameworks/libnettle.8.dylib /Users/xxx/Desktop/baishan/bsvpn/vpn_client/mac/bsconnect.app/Contents/Frameworks/libhogweed.6.dylib

执行完之后再次用otool -l查看一下,如图

已经修改成功了,然后再次用macdeployqt工具打包,就没问题了

mac下Qt缺失libiodbc.2.dylib和libpq.5.dylib解决方案

经查询资料,libpq.5.dylib是

在这里插入图片描述

这玩意的一个动态链接库,于是下载安装就行了

postgres安装包下载
 

ibiodbc.2.dylib就更好办了,如果没安装过直接:
brew install libiodbc
完事后dylib文件就在那里了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值