Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1584488
  • 博文数量: 239
  • 博客积分: 1760
  • 博客等级: 上尉
  • 技术积分: 1595
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-08 23:53
文章分类

全部博文(239)

文章存档

2016年(1)

2015年(28)

2014年(53)

2013年(42)

2012年(50)

2011年(65)

分类: 嵌入式

2013-08-07 09:35:42

我们在编译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可执行程序了。

阅读(1127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~