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. 一切都好了以后,打包发布。


												

QT .pro文件的学习收获的更多相关文章

  1. Qt Pro文件与Qt模块启用

    看qt论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 一.从哪开始呢 不妨先看个例子吧: #include <QtCore/QCoreApplication& ...

  2. QT pro文件解析

    在QT中使用qmake自动生成pro文件,如果要自己定制工程选项,则需要自行修改pro文件. pro文件有以下关键字:TEMPLATE.TARGET.DESTDIR.DEPENDPATH.INCLUD ...

  3. 【整理】QT .pro文件中的变量说明

    注释 以"#"开始的行,直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE = app 其中 app - 表示该工程建立一个应用程序的makefile.这 ...

  4. QT pro文件详细写法+实例

    很多的初学者都没有注意pro 文件的内容 今天简单的介绍一下 这个文件主要内容 TEMPLATE:这个变量是用来定义你的工程将被编译成什么模式.如果没有这个设置,系统将默认编译为application ...

  5. Qt .pro文件 详解

    1. TEMPLATE变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake工具定义了5种模板:1. 应用程序App,为建立一个Qt应用程序创建Mak ...

  6. QT .pro文件 LIBS用法详解

    在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...

  7. Qt pro文件语法

    在Qt下做开发的时候.pro文件就是工程的配置文件,虽然很多时候里面的选项是工具自动生成的,但是难免会需要手动修改的时候,下面就记录一下它的基本语法 #:在.pro文件中表示注释,注释当前行 TEMP ...

  8. QT .pro文件中的变量说明

      https://blog.csdn.net/tanou3212/article/details/79942840 TEMPLATE:定义了工程的编译模式 赋值方式为:TEMPLATE=app (1 ...

  9. Qt .pro文件详解

    在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...

随机推荐

  1. Android 性能优化(8)网络优化( 4)Optimizing App-Initiated Network Use

    Optimizing App-Initiated Network Use This lesson teaches you to Batch and Schedule Network Requests ...

  2. 279 Perfect Squares 完美平方数

    给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...) 使得他们的和等于 n.你需要让平方数的个数最少.比如 n = 12,返回 3 ,因为 12 = 4 + 4 + 4 : ...

  3. Kafka~服务端几个常用的命令

    在Centos上安装和部署完成kafka之后,我们就可以向服务端推消息和消费它了,今天主要聊几个常用的命令,比建立topic,从broken显示所有topics列表,向broken发消息,从broke ...

  4. 构建一个.net的干货类库,以便于快速的开发 - 加密

    在开发程序的时候,加密是一个程序一个必须的功能,基本上任何程序都会用到加密,而不同的加密方式又适应不同需求,有些加密是不可逆的,最常见是用于用户密码的加密,因为很多时候程序里面不该显示出用户的明文密码 ...

  5. [ SDOI 2006 ] 仓库管理员的烦恼

    \(\\\) Description 有 \(n\) 种货物和 \(n\) 个仓库,开始第 \(i\) 个仓库里有 \(a_{ij}\) 个第 \(j\) 种货物. 现在要让每种货物都只放到一个仓库里 ...

  6. sublime 设置浏览器

    方法一: 1.安装sidebarenhancements插件 ctrl+shift+p —> Install Package —> 找到SideBarEnhancements 2.配置预览 ...

  7. 在linux下运行mongodb

    一>下载 1.去mongodb官网下拉框中找到 linux =>RHEL 6 => Package Manager: 2.Instructions for installing wi ...

  8. DIV水平 垂直居中CSS

    /*实现一.原理:要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上边框的距离设置为50%,这个50%就是指页面窗口的宽度和高度 ...

  9. Lazarus 字符集转换 Utf8ToAnsi,UTF8ToWinCP,UTF8ToSys,UTF8ToConsole

    由于Lazarus从1.2版开始默认字符集就是UTF8,如果要转到系统正常显示或文本保存,就必须对字符集进行转换.Lazarus提供了很多函数.如题. 那么这里面有什么关系呢? UTF8ToSys 需 ...

  10. HTML <section> 标签

    实例 文档中的区段,解释了 PRC: <section>   <h1>PRC</h1>   <p>The People's Republic of Ch ...