坚持QtQML,坚持移动互联网

http://www.qtcn.org/bbs/u/121778  [收藏] [复制]

toby520

将QtCoding进行到底,做Qt的宠儿

  • 89

    关注

  • 164

    粉丝

  • 3580

    访客

  • 等级:精灵王
  • 身份:论坛版主
  • 总积分:1262
  • 男,1986-11-17

最后登录:2024-05-14

更多资料

日志

Mac发布Qt应用程序

2011-10-28 21:27
                          Mac版本发布流程
一、     如何发布应用程序
整理需要打包的应用程序,比如yourAPP.app,这里的app应用程序存在一个工程的架构。基本构建如下:应用程序plugandint.app

其中MacOs下放置应用程序,其他文件放置临时文件或者一些插件,动态库之类的。
在这里提到FrameworkDylib等库的问题,是关键所在,如何解决库之间的依赖和在无开发环境下的Mac下也能运行该应用程序,需要参照:http://doc.qt.nokia.com/latest/deployment-mac.html#application-dependencieshttp://blog.devep.net/virushuo/2009/07/01/xcodecocoadylib.html
等相关文章。
在举例之前我想申明下:
由跨平台的Qt应用程序跑在Mac上面问题实在不少。要不怎么叫跨平台呢^_^。不然代码也得调整下,主要是Mac下面的app的整个目录架构就如上面所说,平时我们的临时文件和公共文件都和bin同目录,但是在一旦生成了app,它会自动生成如上结构,我们只得修改代码将临时目录和公共目录移动到Resource下,另外如何存在多个应用程序,需要添加至MacOs下面与主应用一起。
举个例子:我们在App工程中有个Framework文件,里面全是动态库文件,但是打包之后在无开发环境的mac机器上面运行不了,这里主要是存在一个动态库依赖的路径问题。
以下是具体操作:
1.      首先我们要新建一个目录放置:yourApp/Contents/Framework/放置一些动态库。
2.      然后用otool工具查看应该应用以来哪些库:[size=font-size:9.0pt,9.0pt]otool-L MobFound.app/Contents/MacOS/MobFound[size=font-size:9.0pt,9.0pt],查看yourApp依赖哪些库。
[size=font-size:9.0pt,9.0pt]3.   [size=font-size:9.0pt,9.0pt]install_name_tool-id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore yourApp[size=font-size:9.0pt,9.0pt].app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore[size=font-size:9.0pt,9.0pt][size=font-size:9.0pt,9.0pt]其中[size=font-size:9.0pt,9.0pt]install_name_tool [size=font-size:9.0pt,9.0pt]是苹果提供的用来修改dylib安装名称的命令。诸如此类对其他动态库也进行如此设置即可。[size=font-size:9.0pt,9.0pt]
4.      [size=font-size:9.0pt,9.0pt]install_name_tool-change/Users/ndoo_mini_1/QtSDK/Desktop/Qt/474/gcc/lib/QtCore.framework/Versions/4/QtCore@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCoreMobFound.app/Contents/MacOS/MobFound[size=font-size:9.0pt,9.0pt]。第二个参数是指系统自带动态库的路径,第三个参数是这个应用程序里面动态库的路径。
5.      [size=font-size:9.0pt,9.0pt]主要解决动态库自己本身的依赖问题也可以采用otool[size=font-size:9.0pt,9.0pt][font=&amp]–[size=font-size:9.0pt,9.0pt]L yourApp[size=font-size:9.0pt,9.0pt].app/Contents/Framework/[size=font-size:9.0pt,9.0pt]下的动态库的依赖库,一定要解决依赖问题:install_name_tool [size=font-size:9.0pt,9.0pt][font=&amp]–[size=font-size:9.0pt,9.0pt]changepath/to/Qt/lib/QtCore.framework/Versions/4/QtCore  @executable_path/../Framework/QtCore.framework/Versions/4/QtcoreyourApp[size=font-size:9.0pt,9.0pt].app/Contents/Framework/QtGui.framework/Versions/4/QtGui[size=font-size:9.0pt,9.0pt]表示Qtgui依赖QtCore。
6.      [size=font-size:9.0pt,9.0pt]用otool查看一下是否依赖完全或者存在依赖关系。
[size=font-size:14.0pt,14.0pt]二、   [size=font-size:14.0pt,14.0pt]打包
[size=font-size:9.0pt,9.0pt]1.   [size=font-size:9.0pt,9.0pt]工具(Packagemaker Xcode自带打包工具、Qt自带macdeployqt工具)
[size=font-size:9.0pt,9.0pt]以上2个打包工具不好使,Packagemaker打包后安装路径不能自定义(目前笔者没找到方法,读者可以自行研究)。Macdeployqt工具有权限问题存在。
[size=font-size:9.0pt,9.0pt]2.   [size=font-size:9.0pt,9.0pt]目前找到了一款DMG Canvas打包工具:DMG Canvas 一款制作DMG文件的软件, 我们都知道MAC系统下面一般安装文件都是DMG形式的, 如果用系统自带的办法来做DMG文件还是相当麻烦的,而且自定义性能不好!
[size=font-size:9.0pt,9.0pt]DMGCanvas [size=font-size:9.0pt,9.0pt]具有简单易用、自定义强的特别,很容就能做出精美的DMG文件! 我们来一起看一下软件的界面,是不是看上去十分简单易懂!
[size=font-size:9.0pt,9.0pt]1.Contents [size=font-size:9.0pt,9.0pt]在这里我们添加制作DMG。
[size=font-size:9.0pt,9.0pt]2. [size=font-size:9.0pt,9.0pt]我们把需要制作称DMG文件的内容拖入到2的位置就可以了!
[size=font-size:9.0pt,9.0pt]3. [size=font-size:9.0pt,9.0pt]这里来设定我们制作好的DMG文件打开窗口的大小!
[size=font-size:9.0pt,9.0pt]4. [size=font-size:9.0pt,9.0pt]在这里可以设置DMG里面文件的图标大小,标签所在位置,是否显示边栏等!




分类:默认分类|回复:0|浏览:4147|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-15 07:19
©2005-2016 QTCN开发网 版权所有 Gzip disabled