QT 中.pro文件的写法

本文详细介绍了QT中.pro文件的写法,包括注释、指定源文件、头文件、配置信息等内容,同时还提供了模板变量、预定义宏设置及常见选项的修改方法。

QT 中.pro文件的写法是本文要介绍的内容,在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:

1、注释

从“#”开始,到这一行结束。

2、指定源文件

SOURCES = *.cpp 

对于多源文件,可用空格分开,如:SOURCES = 1.cpp 2.cpp3.cpp或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样:    

SOURCES = hello.cpp\
            main.cpp 

一个更冗长的方法是单独地列出每一个文件,就像这样:

SOURCES+= hello.cpp   
SOURCES +=main.cpp 

这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。

3、指定头文件

HEADERS = hello.h或者HEADERS += hello.h

列出源文件的任何一个方法对头文件也都适用。

4、配置信息

CONFIG用来告诉qmake关于应用程序的配置信息。

CONFIG+= qt warn_on release 

在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项是更安全的。

1、qt部分告诉qmake这个应用程序是使用Qt来连编的。这也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。

2、warn_on部分告诉qmake要把编译器设置为输出警告信息的。

3、release部分告诉qmake应用程序必须被连编为一个发布的应用程序。在开发过程中,程序员也可以使用debug来替换release

5、指定目标文件名

TARGET = filename 

如果不设置该项目,目标名会被自动设置为跟项目文件一样的名称

6、添加界面文件(ui)

INTERFACES = filename.ui  // FORMS filename.ui 

7、平台相关性处理

我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

win32 {
    SOURCES += hello_win.cpp   

所以如果qmake运行在Windows上的时候,它就会把hello_win.cpp添加到源文件列表中。如果qmake运行在其它平台上的时候,它会很简单地把这部分忽略。

8、如果一个文件不存在,停止qmake

如果某一个文件不存在的时候,你也许不想生成一个Makefile。我们可以通过使用exists()函数来检查一个文件是否存在。我们可以通过使用error()函数把正在运行的qmake停下来。这和作用域的工作方式一样。只要很简单地用这个函数来替换作用域条件。对main.cpp文件的检查就像这样:

!exists( main.cpp ) {   
        error( "No main.cpp file found")       
        } 

“!”用来否定这个测试,比如,如果文件存在,exists( main.cpp)是真,如果文件不存在,!exists( main.cpp )是真。

9、检查多于一个的条件

假设你使用Windows并且当你在命令行运行你的应用程序的时候你想能够看到qDebug()语句。除非你在连编你的程序的时候使用console设置,你不会看到输出。我们可以很容易地把console添加到CONFIG行中,这样在Windows下,Makefile就会有这个设置。但是如果告诉你我们只是想在当我们的应用程序运行在Windows下并且当debug已经在CONFIG行中的时候,添加console。这需要两个嵌套的作用域;只要生成一个作用域,然后在它里面再生成另一个。把设置放在最里面的作用域里,就像这样:

win32 {   
         debug {   
              CONFIG += console  
         }   

嵌套的作用域可以使用冒号连接起来,像这样:

win32:debug {   
        CONFIG += console  

10、摸板
模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:
1、app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
2、lib - 建立一个库的makefile。
3、 vcapp - 建立一个应用程序的VisualStudio项目文件。
4、vclib - 建立一个库的VisualStudio项目文件。
4、 subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
11、生成Makefile
qmake -当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:

Makefile可以像这样由“.pro”文件生成:

 hello.pro 

对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:

qmake -tvcapp -o hello.dsp hello.pro 

附加:

.pro 文件预定义宏设置

CONFIG(release, debug|release) {  
     DEFINES += MYRELEASE 
  }   
else {   
    DEFINES += MYDEBUG   
我们在编译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文件。 
888888888888888888888888888888888888888888888888888888888888888888
第一种常用方式:#模块设置,一般设置为app(生成应用程序,默认),subdirs(生成makefile文件编译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 第二种常用方式,用于子文件夹的编译:#设定模块为子文件夹编译方式 TEMPLATE = subdirs 

#子文件夹目录,可用\换行 SUBDIRS = src1 \           src2

在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可执行程序了

转载于:https://my.oschina.net/laopiao/blog/87160

<think>嗯,用户想了解Qt项目文件中的INCLUDEPATH的作用和用法。首先,我需要回忆一下自己在Qt开发中的经验。记得.pro文件是用来配置项目构建的,而INCLUDEPATH应该和头文件路径有关。 对,INCLUDEPATH应该是指定编译器在哪些目录下查找头文件的。比如当项目引用了第三方库或者自己的头文件不在默认路径时,就需要配置这个变量。用户可能需要知道如何正确设置路径,避免编译错误。 然后,用户可能还想知道具体的语法和使用示例。比如相对路径和绝对路径的区别,多个路径如何分隔。我记得在.pro文件中,路径是用空格分隔的,或者用反斜杠换行。需要确认一下是否正确。 另外,引用中的资料提到INCLUDEPATH用于指定工程要加载的头文件路径,这和我的理解一致。可能需要结合用户提供的引用资料来组织回答,确保准确性。 用户可能遇到的常见问题包括路径错误导致头文件找不到,或者如何正确使用相对路径。这时候给出一些示例会很有帮助,比如如何添加当前目录下的include文件夹,或者第三方库的路径。 还要注意是否需要区分不同的操作系统,比如Windows和Linux下的路径写法差异。不过Qt通常会自动处理斜杠的问题,所以可能不需要特别说明,但提一下会更全面。 最后,用户可能需要知道INCLUDEPATH和其他类似配置(如LIBS)的区别,比如INCLUDEPATH负责头文件,而LIBS负责库文件。确保在回答中明确这一点,避免混淆。 总结下来,回答的结构应该是:作用、语法、注意事项、示例,以及常见问题。同时结合引用中的信息,让回答更权威。比如引用3提到INCLUDEPATH的作用,可以引用作为依据。 可能还需要检查是否有其他相关的配置变量,比如CONFIG或LIBPATH,但用户的问题集中在INCLUDEPATH,所以不需要展开,但可以提到它们的区别。 确保回答清晰,步骤明确,用户能按照示例正确配置自己的.pro文件。另外,生成的相关问题也要围绕INCLUDEPATH的常见问题展开,比如路径无效怎么办,如何验证配置是否生效等。</think>### Qt .pro文件中的INCLUDEPATH配置详解 #### 一、INCLUDEPATH的作用 `INCLUDEPATH`是Qt项目文件.pro)中用于指定编译器搜索头文件路径的配置变量。当项目中需要引用第三方库或自定义头文件时,若这些文件不在默认搜索路径中,需通过`INCLUDEPATH`显式声明其目录,否则编译时会因找不到头文件报错[^3]。 #### 二、语法与使用方法 1. **基本语法** 在.pro文件中直接赋值,支持绝对路径和相对路径: ```pro INCLUDEPATH += path/to/dir1 \ path/to/dir2 ``` - `+=`表示追加路径(保留原有路径) - 多路径可用`\`换行分隔或空格分隔(若路径含空格需用引号包裹) 2. **相对路径示例** 假设项目目录结构如下: ``` project/ ├── include/ │ └── utils.h └── src/ └── main.cpp ``` 需添加`include`目录: ```pro INCLUDEPATH += $$PWD/include # $$PWD表示.pro文件所在目录的绝对路径[^1] ``` 3. **第三方库示例** 若使用Matlab库,需添加其头文件路径: ```pro INCLUDEPATH += "C:/Program Files/MATLAB/R2023a/extern/include" ``` #### 三、注意事项 1. **路径有效性** 若路径不存在或拼写错误,编译时会提示`No such file or directory`错误[^1]。 2. **与`LIBS`配合使用** `INCLUDEPATH`仅指定头文件路径,库文件路径需通过`LIBS`配置: ```pro LIBS += -L/path/to/libs -lmath ``` 3. **跨平台兼容性** 使用`/`作为路径分隔符(Qt自动适配不同操作系统)。 #### 四、验证配置生效 1. 保存.pro文件后,查看Qt Creator的“概要信息”输出,确认路径被正确解析[^2]。 2. 编译时若未报头文件缺失错误,则配置成功。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值