QT中的pro文件的编写

时间:2024-01-12 21:34:14

原地址: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可执行程序了