QT中的pro文件的编写
原地址:http://blog.csdn.net/fjb2080/article/details/4833666
我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。
要自己全部写pro文件又有点麻烦,所以,一般都是先运行
qmake -project
来生成基本的pro文件。
例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件。
对一般的工程,我们只需要修改几个基本的常用的选项,下面说说怎么修改。
假设我们有个目录,名字为backup。下面有a.h,a.cpp,b.h,b.cpp,main.cpp等文件。
首先我们可以在backup目录下运行qmake -project生成backup.pro文件。
在backup.pro里已经包含了几个基本的选项,如
TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等选项。
下面说明一下几个经常修改的选项。
HEADS:
我们工程中头文件如下:
HEADS += a.h /
b.h
SOURCES:
我们工程中的cpp文件,如下:
SOURCES += a.cpp /
b.cpp /
main.cpp
上面的两个选项的文件分行是用反斜线/来分行,最后一个不用,如果是同一行的文件可以空格分开,我们在执行qmake
-project的时候,qmake已经自动帮我们写上了,省去我们这些麻烦,不过以后要增加文件可以在这里增加。
INCLUDEPATH:
这个选项可以指定我们#include语句要包含头文件的目录,如果你有其它的不在当前目录的头文件需要包含进来,并又不想在自己的源文件中使用绝对路径或相对路径来包含头文件,那么我就可以在这里把这个头文件所在的路径包含进来,例如在backup目录的兄弟目录里有个目录为image的目录,里面有个头文件为image.h,我们的b.h里要用到,因此我们在backup.pro文件中设置INCLUDEPATH为
INCLUDEPATH
+= ../image
这样,我们在b.h里只需要#include "image.h"就可以了。
CONFIG:
CONFIG经常用到的一个是就是设置release版本或是debug或是release和debug的版本信息。如果我们要调试可以这样设置。
CONFIG +=
debug
或CONFIG +=
release (release版本)
下面是CONFIG的几个版本的选项:
| release | The project is to be built in release mode. This is ignored if debug is also specified. |
| debug | The project is to be built in debug mode. |
| debug_and_release | The project is built in both debug and release modes. This can have some unexpected side effects (see below for more information). |
| build_all | If debug_and_release is specified, the project is built in both debug and release modes by default. |
| ordered | When using the subdirs template, this option specifies that the directories listed should be processed in the order in which they are given. |
| precompile_header | Enables support for the use of precompiled headers in projects. |
| warn_on | The compiler should output as many warnings as possible. This is ignored if warn_off is specified. |
| warn_off | The compiler should output as few warnings as possible. |
LIBS:
这里可以选择我们要包含的库,例如我们的工程要用到libz.so的一个压缩库,我可以怎么写:
LIBS +=
-lz
或是用到我们image目录下的libimage.so库,那么可以这么写:
LIBS +=
-L../image/image
DEFINES:
DEFINES又是我们一个常用的定要,它相当于我们用gcc的-D定义。例如,我们的backup工程需要对大文件进行读写就可以这样定义:
DEFINES +=
_LARGEFILE64_SOURCE _FILE_OFFSET_BITS=64
RESOURCES:
定义我们的资源描述文件,我们工程里需要很多图片,那么这些图片的定义都可以放在backup.qrc文件中进行描述,那么这里就可以指出我们的qrc文件。
RESOURCES +=
backup.qrc
TARGET:
这个选项可以让我们定义我们生成的目标文件的名字,例如我们执行我们这个backup工程是默认生成backup的执行文件,但我们想让我们的执行的文件名为abcbackup,我们就可以这样写
TARGET =
abcbackup
OBJECTS_DIR:
一般我们在编译我们的工程的时候会生成许多的中间文件,如.o文件(linux下)或.obj(windows下),这样我们的工程就很乱,所以我们可以定义这个选择,我们可以这样定义:
OBJECTS_DIR +=
./objs
这样,我们的这些中间文件就全都在backup/objs目录下了
一般,我们不会在我们的工程里直接编译,这样的话,工程比较乱,我们可以在backup目录下建立一个目录,为bakcup-build目录,我们在这个目录下编译,这样其他的临时文件就在这个目录下,这样我们的工程看起来就不会那么乱了。
我们进入bakcup-build目录,然后运行
qmake -o Makefile
../bakcup.pro
这样我们就在当前目录下生成了一个Makefile。在这个目录下执行make就可以生成我们的abcbackup可执行程序了
QT中的pro文件的编写的更多相关文章
- Qt Creater中的.pro文件和.pri文件
初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...
- QT5中的pro文件中为何要加入"QT += widgets"
在pro文件里写"QT+=widgets"表示引入QtWidget这个module,qmake在生成makefile的时候,会设置好include path 和 lib path, ...
- 2.QT中使用资源文件,程序打包
1 程序中使用资源文件 A 一个QT空项目 B 右击项目,添加新文件 添加后的效果是 C 右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: ...
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...
- 4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(
新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...
- QT学习日记篇01(1)-QT界面初探- *.pro文件详解
一: 项目管理文件(.pro文件) 项目管理文件用于记录项目的一些设置,以及项目包含文件的组织管理 后缀为".pro"的 文件是项目的管理文件,文件名就是项目的名称,如Demo.p ...
- qt中建立图片资源文件
qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...
- qt中执行 sql文件的方法
由于qt中没有原生的执行sql文件的方法.因此我们需要根据sql文件中的流的特点,将其分解成一个个语句单独执行. 1.首先通过Qfile读取sql文件 2.将sql文件中的内容通过“:”进行拆解 3. ...
- 利用Qt中的ui文件生成PyQt5程序,自定义槽函数
1.在Qt Creator4.8.0上面设计如上.ui文件 2.点击上方图标,可以建立信号-槽连接,button_click()为自定义槽函数 3.设计目的:点击clear按钮,可消除上方文本框中的内 ...
随机推荐
- JAVA中IO和异常处理练习
1.SystemI\O练习:1)通过键盘输入若干字符,并通过显示器输出:2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringE ...
- Poj 2299 Ultra-QuickSort(归并排序)
题目链接:http://poj.org/problem?id=2299 思路分析:序列的逆序数即为交换次数,所以求出该序列的逆序数即可.根据分治法思想,序列分为两个大小相等的两部分, 分别求子序列的逆 ...
- AVOS Cloud Hackathon - SegmentFault
AVOS Cloud Hackathon - SegmentFault AVOS Cloud Hackathon
- Swift - 2 (?和!、结构体、类、协议、扩展、闭包)
1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 ...
- 如何快速方便的输出向量vector容器中不重复的内容
在vector容器中,存入的内容难免会出现重复,那么如何快速输出或提前非重复的那些数据呢,即重复的数据只输出一次,直观的方法是每次输出都要通过循环比较是否已经输出过,这种方法还是比较费时的,可以利用u ...
- eclipse the user operation is waiting for building workspace" to complete
"the user operation is waiting for building workspace" to complete", 解决办法: 1.选择菜单栏的“P ...
- 为什么国内的网盘公司都在 TB 的级别上竞争,成本会不会太高?(还有好多其它回复)
作者:杜鑫链接:http://www.zhihu.com/question/21591490/answer/18762821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...
- jQuery带有定时器的tab栏切换
现在网上很多类似选项卡的切换,我们成为tab栏切换,比如下图: 新浪的tab栏切换 淘宝的tab栏切换 其中,新浪的tab栏鼠标放上去,可以快速的来回切换,但是如果采取ajax异步传输,不停去加载服务 ...
- sequence1(暴力)
sequence1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- JavaScript的实现
了解了JavaScript是干什么的< 对一些词的理解 >,下面该知道它是怎么实现的. 一个完整的JavaScript是由三部分组成的,如下图 ECMAScript 可以为不同种类的宿主环 ...