[QT]build release之后打包dmg和macdeployqt的坑


  • 通过release切换
  • 设置release输出路径
    image.png

    image.png
  • 执行build-构建
  • 到app所在目录
    • 执行macdeployqt YuvEye.app -dmg 生成dmg
    • 或者用dropdmg设计,
      • macdeployqt YuvEye.app (常用)
      • 拖到 dropdmg

记住:dropdmg智能正常转换 *.app

坑列表

1. 动态库依赖坑

acdeployqt myApp.app
ERROR: no file at "/usr/lib/liba.dylib"

发生在 QT界面build之后
因为有动态库dylib依赖

解决办法:

otool -L YuvEye.app/Contents/MacOS/YuvEye 

查看动态库指向

YuvEye.app/Contents/MacOS/YuvEye:
    liba.dylib

这个时候动态库式引导默认路径寻找,原本是/usr/local/lib
但是:!macdeployqt不会找这个目录,所以需要我们自动定向过来

install_name_tool -change liba.dylib /usr/local/lib/liba.dylib /xxx/YuvEye.app/Contents/MacOS/YuvEye

之后就是:

YuvEye.app/Contents/MacOS/YuvEye:
    /usr/local/lib/liba.dylib

但是还不能解决问题,因为打包之后需要让他自动在保内寻找,定义绝对路径:
deploy执行app

macdeployqt YuvEye.app

执行之后其实已经copy进来了,去寻找一下

find ./ -name liba.dylib

# 输出
/xxx/xxx/YuvEye.app/Contents/Frameworks/libEyeReader.dylib

其中/xxx/xxx/YuvEye.app/Contents/Frameworks这一层转换为变量@rpath
最后替换相对路径

install_name_tool -change /usr/local/lib/libEyeReader.dylib @rpath/libEyeReader.dylib 
/xxx/YuvEye.app/Contents/MacOS/YuvEye

成功:

otool -L YuvEye.app/Contents/MacOS/YuvEye
# 输出:
YuvEye.app/Contents/MacOS/YuvEye:
    @rpath/liba.dylib (compatibility version 0.0.0, current version 0.0.0)

其中liba.dylib内部也被替换了,所以不需要管

otool -L .//YuvEye.app/Contents/Frameworks/liba.dylib
输出
.//YuvEye.app/Contents/Frameworks/liba.dylib:
    @executable_path/../Frameworks/liba.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libb.dylib (compatibility version 0.0.0, current version 0.0.0)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相关文章和阅读顺序 搭建Typescript+React项目模板(1) --- 项目初始化搭建 Typescrip...
    大春春阅读 3,591评论 0 12
  • 在你完成应用程序的beta版本后,最后会有些人去帮你测试,使你去完善应用程序……或者会有投资青睐。但是如果测试人员...
    zmp1123阅读 6,787评论 15 46
  • 2017年7月8日,我即将离开这个我已经待了两年的地方。 还记得我刚来时的情景,那一天宿舍里来了三...
    荣我静静阅读 260评论 0 1
  • “死亡”两个字是我们很忌讳的。也很少提及,一个人死了,我们会找各种词代替,比如“去了”“走了”很隐晦的方式。专...
    夏悯默阅读 317评论 0 0
  • 以后去参加曹永胜婚礼的话,你一定会在,我希望自己以前值得你喜欢,那个时候也能让你欣赏 這世界從未對我不公,也許有過...
    今天最好啦阅读 359评论 0 0