mac Qt程序打包

1 篇文章 0 订阅

在此记录一下Qt在mac下生成app后,如何为app配置相关的依赖项,使得生成的app直接拿到别人的电脑上可以直接运行。
总的来说需要三步
第一:使用macdeployqt工具将需要的Qt依赖拷贝到app中,关于macdeployqt工具将不再多说,跟Windows的windeployqt一样,在安装QtCreator时自动添加到安装bin目录中
第二:将我们自己引入的库文件、资源文件、配置文件等添加到app中(如果这几项没有使用,略过即可)
第三:使用install_name_tool -change命令将app的引用库路径指定到我们的app包内
下面以test.app为例进行各步骤命令的讲解:

  1. 在test.app所在文件夹打开终端,输入命令 “macdeployqt安装全路径 test.app路径”,例如我的macdeployqt在路径/Users/Qt5.12.3/5.12.3/clang_64/bin/macdeployqt,在test.app同路径下打开的终端,则输入的命令为"/Users/Qt5.12.3/5.12.3/clang_64/bin/macdeployqt test.app",使用者可以根据自己安装的路径和开启终端与app的相对路径进行命令中路径引用的调整,此时可以看到会在Contens中新增了Frameworks和Plugin文件夹,里面存放的是对应的qt环境依赖
  2. 将app需要的我们自己添加的依赖,比如动态库,资源文件等拷贝到app包内,通常依赖的动态库或静态库放到Frameworks文件夹中,资源文件放到Resouse文件夹中,其他的一些配置文件等可以根据代码中的相对路径需要,创建新的文件夹拷贝进去即可
  3. 进入到test.app/Contens/MacOS文件夹,对其中的test目标文件进行依赖路径的重新设置,其中包括:自己添加的库依赖路径、依赖库的依赖路径,Qt库依赖路径的重新设置等,如果没有依赖其他自己添加的库,前两个设置省略。在此还需要说一下一个命令"otool -L test"在test.app/Contens/MacOS文件夹中打开终端,执行该命令,可以查看test需要的依赖库有哪些,本次的test查询结果界面如下:在这里插入图片描述
    我们需要关注的就是@rpath开头的几个,这是应用程序对本地QtCreator安装路径下的库依赖,现在需要指定到我们的test.app//Contens/Frameworks/文件夹下拷贝的Qt环境依赖了,命令如下:
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets test
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui test
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore test

如果test引用了libtestA.1.dylib,则还需要添加对自己引用库的依赖路径变更

install_name_tool -change libtestA.1.dylib @executable_path/../Frameworks/libtestA.1.dylib test

至此搞定。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值