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 += plugIns4.使用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文件的学习收获的更多相关文章
- Qt Pro文件与Qt模块启用
看qt论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 一.从哪开始呢 不妨先看个例子吧: #include <QtCore/QCoreApplication& ...
- QT pro文件解析
在QT中使用qmake自动生成pro文件,如果要自己定制工程选项,则需要自行修改pro文件. pro文件有以下关键字:TEMPLATE.TARGET.DESTDIR.DEPENDPATH.INCLUD ...
- 【整理】QT .pro文件中的变量说明
注释 以"#"开始的行,直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE = app 其中 app - 表示该工程建立一个应用程序的makefile.这 ...
- QT pro文件详细写法+实例
很多的初学者都没有注意pro 文件的内容 今天简单的介绍一下 这个文件主要内容 TEMPLATE:这个变量是用来定义你的工程将被编译成什么模式.如果没有这个设置,系统将默认编译为application ...
- Qt .pro文件 详解
1. TEMPLATE变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake工具定义了5种模板:1. 应用程序App,为建立一个Qt应用程序创建Mak ...
- QT .pro文件 LIBS用法详解
在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...
- Qt pro文件语法
在Qt下做开发的时候.pro文件就是工程的配置文件,虽然很多时候里面的选项是工具自动生成的,但是难免会需要手动修改的时候,下面就记录一下它的基本语法 #:在.pro文件中表示注释,注释当前行 TEMP ...
- QT .pro文件中的变量说明
https://blog.csdn.net/tanou3212/article/details/79942840 TEMPLATE:定义了工程的编译模式 赋值方式为:TEMPLATE=app (1 ...
- Qt .pro文件详解
在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...
随机推荐
- tomcat 参数调优
JAVA_OPTS="-Xms2g -Xmx2g -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath= ...
- 【css】回想下经典的布局
看到这张图相信大多数人都很熟悉,这曾经是一种经典的布局方式,一道经典的面试题,一般形如"实现一个布局,左右固定宽度,中间自适应".随着岁月的流转,时光的交替(颇有一种“天下风云出我 ...
- Redis基础---5个基本数据结构(比较性记忆)
“ Redis是一个内存数据库,只用硬盘来进行持久化. Mongodb是半内存数据库 Mysql是硬盘数据库 ” 1. Redis启动 安装好了之后.运行redis-3.2.8/src/下的redis ...
- Spring-security自定义过滤器
定义过滤器 public class TokenAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter { publ ...
- hbase优化小结
目录: 1,背景 2,GC 3,hbase cache 4,compaction 5,其他 1,背景 项目组中,hbase主要用来备份mysql数据库中的表.主要通过接入mysql binlog,经s ...
- 13 继续C#中的方法,带返回值的方法介绍
在这一个练习中,我们要使用带返回值的方法.如果一个方法带返回值,那么它的形式是这样的. 定义一个带返回值的C#方法 static 返回类型 方法名字 (参数类型 参数1的名字,参数类型 参数2的名字) ...
- Python学习日记之忽略删除字符串空白
使用Python自带的函数strip可以剔除字符串开头.结尾.两端的空白 使用场景:用户输入验证 strip : 去除字符串两端的空白 rstrip : 去除字符串末尾(右端)的空白 lstrip : ...
- IE 浏览器在地址栏输入中文字符,发送get请求报400错误的问题
因为学校有JavaWeb的课程,所以才接触这方面.最近遇到了个小问题. 先看一段很简单的jsp代码例子 <%@ page language="java" import=&qu ...
- 远程监视jboss应用java内存的配置(实测) .
前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...
- 动态设置缩放比例和html字体大小
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...