QT .pro文件的学习收获

1. 载pro文件预定义宏:

CONFIG(debug,debug|release){
DEFINES+=__DEBUG__
}else{
DEFINES+=__RELEASE__
macx:DESTDIR=$$PWD/../../Setup/MacOS/XXX.app/Contents
macx:QMAKE_POST_LINK+=install_name_tool-change $(QTDIR)/src path @executable_path/  dest path    $(DESTDIR)/ file &&\
install_name_tool-change $(QTDIR)/src path @executable_path/  dest path    $(DESTDIR)/ file &&\
}
DEFINES 预定于宏,DESTDIR编译完成后,文件输出的位置,QMAKE_POST_LINK 编译完成后执行的操作。

qt程序载mac平台的发布:
假设QT的app程序结构如下:
XXX.app
  Contents
    MacOS
    Labrary
    Frameworks
    PlugIn
    qt.config

发布的步骤:
1. 首先将Labrary 和MacOS中所有二进制文件中依赖的qt的frameworks(QtCore、QtGui、QtPrintSupport、QtWidgets)放在Frameworks中;
2. 将平台相关的插件(libqcocoa.dylib(只用你的程序使用cocoa的东西好像就需要这个插件)、libqico.dylib(如果你的程序使用了图标这个插
件是必须的))放在PlugIn目录中;
3. qt.conf中写入插件需要目录:
[Paths]
PlugIns += plugIns

4.使用otool -l工具查看所有的二进制文件,看是否依赖QT的frameworks,如果依赖,则使用inatall_name_tool工具修改依赖的frameworks的路径,
修改的方法如下:
macx:QMAKE_POST_LINK+=install_name_tool-change$(QTDIR)/lib/QtWidgets.framework/Versions/5/QtWidgets  \ 
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
$(DESTDIR)/XXX.app/Contents/MacOS/XXX && \
install_name_tool-change$(QTDIR)/lib/QtGui.framework/Versions/5/QtGui \ 
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
$(DESTDIR)/XXX.app/Contents/MacOS/XXX&&\

5. 使用install_name_tool工具修改QtCore、QtGui、QtPrintSupport、QtWidgets 中的依赖的其他的framework的路径(例如QtGui是依赖QtCore的)
修改完后QtGui的截图如下:

修改完QtWidgets的截图如下:


  修改完QtPrintSupport的截图如下:

修改完的libqcocoa.dylib的如图所示:


  注意:为了使修改比较简单,plugIn的上级目录就是Contents,这样所有的路径都向上翻一个路径就可以了,PlugIn下的目录如下:

  platforms文件中存放的是libqcocoa.dylib的软连接文件。同样imageformats中存放的也是libqico.dylib的软连接文件。
  6. 这些步骤完成后,将mac系统上的qt的安装目录重命名,然后测试,看是否成功,如果不成功,使用控制台启动xxx.app/Contents/xxx
看出错的原因,改正错误。
  7. 一切都好了以后,打包发布。














posted on 2013-09-22 18:33  陌上有缘  阅读(973)  评论(0编辑  收藏  举报