大家做 OS X App开发的时候, 应该注意到Apple简洁的应用程序分发方式 - App bundle, 作者摸索后发现QT官方的文档不是很简洁, 照着教程做容易走弯路, 在这里分享一个比较简单的制作方法:
1) QT项目, 动态库编译为dylib, 可执行程序编译为app bundle输出.
2) 拷贝编译出来的动态库到/usr/lib下
3) 使用QT的macdeployqt工具生成可重分发包, 它会帮你将动态链接的QT framework打进App bundle里.
4) 不建议使用 otool/install_name_tool 自己写库依赖. 希望能自己写成功的同学批评指正.
详细讲一下Apple App bundle: App bundle简而言之就是一个目录树结构:
MyApp.app ----- Contents ------- Frameworks
------- MacOs -------- MyApp
------- Resources
------- Plugins
------- Info.plist
Frameworks 目录一般保存 .framework打包形式的动态库, 可以是项目编译出来的, 也可以第三方的库. MacOs保存可执行文件, Resouces下保存资源. 制作完毕的App bundle, 发布后要求可以放在用户的任何目录执行.
Framework ----- Apple 对程序库独特的打包方式, 目录结构类似于App bundle, 支持单个或多个程序库伞状嵌套, 支持程序库的多版本配置. 具体有