.pro文件的写法(转)

阿紫 posted @ 2012年6月12日 00:59 in Qt , 1549 阅读

我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。
要自己全部写pro文件又有点麻烦,所以,一般都是先运行  qmake -project来生成基本的pro文件。
      例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件。
对一般的工程,我们只需要修改几个基本的常用的选项,下面说说怎么修改。
      假设我们有个目录,名字为backup。下面有a.ha.cppb.hb.cppmain.cpp等文件。
首先我们可以在backup目录下运行qmake -project生成backup.pro文件。
1、第一种常用方式:
#模块设置,一般设置为app(生成应用程序,默认),subdirs(subdirs模板可以编译子目录里的目标文件),lib(生成库文件)
TEMPLATE= app
#指定生成的应用程序放置的目录
DESTDIR+= ../bin
#指定生成的应用程序名
TARGET= pksystem
#添加或减少CONFIG的配置模块,一般采用默认即可,但是除去debug_and_release模块不会生成debug和release文件夹
#CONFIG+= release
CONFIG-= debug_and_release
#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录
UI_DIR+= forms
#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录
RCC_DIR+= ../tmp
#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录
MOC_DIR+= ../tmp
#指定目标文件的存放目录
OBJECTS_DIR+= ../tmp
#程序编译时依赖的相关路径
DEPENDPATH+= . forms include qrc sources
#头文件包含路径
INCLUDEPATH+= .
#qmake时产生的信息,

$${a}读取变量a的字符串,

$$(PATH)读取环境变量PATH
#message($$(PATH))
#源文件编码方式
CODECFORSRC= GBK
# Input
#工程中包含的头文件
HEADERS+= include/painter.h
#工程中包含的.ui设计文件
FORMS+= forms/painter.ui
#工程中包含的源文件
SOURCES+= sources/main.cpp sources/painter.cpp
#工程中包含的资源文件
RESOURCES+= qrc/painter.qrc

2第二种常用方式,用于子文件夹的编译:
#设定模块为子文件夹编译方式
TEMPLATE= subdirs
#子文件夹目录,可用\换行
SUBDIRS= src1 \
         src2
在backup.pro里已经包含了几个基本的选项,如
    TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等选项。
下面说明一下几个经常修改的选项。
1)、HEADS
我们工程中头文件如下:
HEADS += a.h \
                    b.h

2)、SOURCES:
我们工程中的cpp文件,如下:
SOURCES += a.cpp \

                          b.cpp \

                          main.cpp

    上面的两个选项的文件分行是用反斜线\来分行,最后一个不用,如果是同一行的文件可以空格分开,我们在执行qmake -project的时候,qmake已经自动帮我们写上了,省去我们这些麻烦,不过以后要增加文件可以在这里增加。 3)、INCLUDEPATH
    这个选项可以指定我们#include语句要包含头文件的目录,如果你有其它的不在当前目录的头文件需要包含进来,并又不想在自己的源文件中使用绝对路径或相对路径来包含头文件,那么我就可以在这里把这个头文件所在的路径包含进来,例如在backup目录的兄弟目录里有个目录为image的目录,里面有个头文件为image.h,我们的b.h里要用到,因此我们在backup.pro文件中设置INCLUDEPATH
4)、 INCLUDEPATH += ../image
这样,我们在b.h里只需要#include "image.h"就可以了。
5)、 CONFIG
CONFIG经常用到的一个是就是设置release版本或是debug或是release和debug的版本信息。如果我们要调试可以这样设置。
    CONFIG += debug
    或CONFIG+= release (release版本)
    下面是CONFIG的几个版本的选项:
release The project is to be built in release mode. This is ignoredif debug   is also specified. 
debug The project is to be built in debug mode. 
debug_and_release The project is built in both   debug andrelease modes. This can have some unexpected side effects (see below for moreinformation). 
build_all If debug_and_release   is specified, the projectis built in both debug and release modes by default. 
ordered When using the subdirs   template, this optionspecifies that the directories listed should be processed in the order in whichthey are given. 
precompile_header Enables support for the use of precompiledheaders   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.

6)、LIBS:
这里可以选择我们要包含的库,例如我们的工程要用到libz.so的一个压缩库,我可以怎么写:
    LIBS += -lz
或是用到我们image目录下的libimage.so库,那么可以这么写:
    LIBS += -L../image/image
7)、 DEFINES:
DEFINES又是我们一个常用的定要,它相当于我们用gcc的-D定义。例如,我们的backup工程需要对大文件进行读写就可以这样定义:
DEFINES += _LARGEFILE64_SOURCE   _FILE_OFFSET_BITS=64
8)、 RESOURCES
定义我们的资源描述文件,我们工程里需要很多图片,那么这些图片的定义都可以放在backup.qrc文件中进行描述,那么这里就可以指出我们的qrc文件。
RESOURCES += backup.qrc
9)、TARGET
这个选项可以让我们定义我们生成的目标文件的名字,例如我们执行我们这个backup工程是默认生成backup的执行文件,但我们想让我们的执行的文件名为abcbackup,我们就可以这样写
TARGET = abcbackup
10)、 OBJECTS_DIR
          一般我们在编译我们的工程的时候会生成许多的中间文件,如.o文件(linux下)或.obj(windows下),这样我们的工程就很乱,所以我们可以定义这个选择,我们可以这样定义:
OBJECTS_DIR += ./objs
这样,我们的这些中间文件就全都在backup/objs目录下了。
      一般,我们不会在我们的工程里直接编译,这样的话,工程比较乱,我们可以在backup目录下建立一个目录,为bakcup-build目录,我们在这个目录下编译,这样其他的临时文件就在这个目录下,这样我们的工程看起来就不会那么乱了。
      我们进入bakcup-build目录,然后运行
            qmake -o Makefile ../bakcup.pro
      这样我们就在当前目录下生成了一个Makefile。在这个目录下执行make就可以生成我们的abcbackup可执行程序了

  • 无匹配
seo service UK 说:
2024年1月16日 17:31

It is quite beneficial, although think about the facts when it reaches this target


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter