QT---之.pro文件结构

Qt_Pro详解

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

1. 注释 从“#”开始,到这一行结束。

2.模板变量告诉qmake为这个应用程序生成哪种makefile。

下面是可供使用的选择:

TEMPLATE = app

A> app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。

B> lib - 建立一个库的makefile。

C> vcapp - 建立一个应用程序的VisualStudio项目文件。

D> vclib - 建立一个库的VisualStudio项目文件。

E> subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

3、#指定生成的应用程序放置的目录

DESTDIR+= ../bin

4、#指定生成的应用程序名,也可以顺带指定生成的应用程序路径,比如 TARGET=../bin/sendMsgToAuxSys

TARGET= pksystem   

     值得注意的是:当我们build后, pksystem会在Debug及Release文件下生成,所以  ../作为一个指令标识,表示Debug的父级目录,并自动补全缺省目录。而../../表示父级的父级目录。

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

CONFIG+= qt warn_on release

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

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

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

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

6、#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录

UI_DIR+= forms

7、#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录

RCC_DIR+= ../tmp

8、#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录

MOC_DIR+= ../tmp

9、#指定目标文件(obj)的存放目录

OBJECTS_DIR+= ../tmp

10、#程序编译时依赖的相关路径

DEPENDPATH+= . forms include qrc sources

11、#头文件包含路径

INCLUDEPATH+= .

#qmake时产生的信息,【$${a}读取变量a的字符串】,【$$(PATH)读取环境变量PATH】 #message($$(PATH))

12、#源文件编码方式

CODECFORSRC= GBK

13、#工程中包含的头文件

HEADERS+= include/painter.h

14、#工程中包含的.ui设计文件

FORMS+= forms/painter.ui

15、#工程中包含的源文件

SOURCES+= sources/main.cpp sources/painter.cpp

16、#工程中包含的资源文件

RESOURCES+= qrc/painter.qrc

LIBS+= -L folderPath //引入的lib文件的路径 -L:引入路径

Release:LIBS += -L folderPath // release 版引入的lib文件路径

Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路径

DEFINES+= XX_XX_XXX //定义编译选项,在.h文件中就可以使用:#ifdefine xx_xx_xxx

RC_FILE= xxx.icns

17# 平台相关性处理 我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。

为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

win32 { SOURCES += hello_win.cpp }

当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:

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

qmake -oMakefile hello.pro

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

qmake -tvcapp -o hello.dsp hello.pro

qmake 常用命令:
   qmake -project //生成pro文件,自动检查c/c++程序文件
        qmake -t lib     //生产把源码编译成库的pro工程文件
   qmake -tp vc //根据pro文件生成vc的工程文件,qt commericial有一个绑定到vs的工具,可以在菜单栏直接打开
   qmake -r xxx.pro "CONFIG+=debug" //递归生成makefile
   moc //包含Q_OBJECT文件转换器
   rcc //Qt resource compiler
   uic //Qt ui file translator,to .h file.
  Qt 常用宏:
   平台相关
   Q_WS_WIN //window系统
   Q_WS_X11 //xwindow系统
   Q_WS_MAC //苹果mac系统
   Q_WS_SOL //sun的solaris系统
   其它
   QT_OPENGL_SUPPORT //是否支援opengl
   QT_VERSION    //qt的版本,如 if QT_VERSION > 0x040601(qt > 4.6.1)
   QT_VERSION_STR //qt版本的字符串
   QT_POINTER_SIZE //指针的字节宽度 32bit=4,64bit=8
   QT_REQUIRE_VERSION //用在代码中,比如QT_REQUIRE_VERSION(argc, argv, "4.0.2");
   global常用函数
   T qAbs(const T & value) //返回绝对值
   void qCritical(const char * msg, ...) //
   void qDebug(const char * msg, ... ) //
   void qFatal(const char * msg, ... ) //输出错误信息
   qMax(const T & value1,const T & value2 )//
   qMin(const T & value1,const T & value2 ) //
  
  pro 文件格式
  #: 表示到行尾均为注视,被忽略
  include: 可以包含别的文本文件,一般为*pri 例如 #include "../global.pri"
  scope{;;}: 预定义 ,如win32{} 表示在win32平台下的定义,其它忽略
  win32/unix/linux-g++/linux-g++-64: 平台宏
  DESTDIR: 产生目标文件路径
  MOC_DIR: moc转换文件路径
  RCC_DIR: 资源文件路径
  UI_DIR:ui文件转换的路径
  LIBEXT: 产生lib的后缀
  QMAKE_CFLAGS_DEBUG:
  QMAKE_CXXFLAGS_DEBUG:
  QMAKE_CFLAGS_RELEASE:
  QMAKE_CXXFLAGS_RELEASE:
  TEMPLATE: 决定生成makefile采用的模板,
   =lib 表示库文件
   =app 表示生成可执行文件
   =subdirs 表示处理子目录(在下面用SUBDIRS += **来指定那些子目录)
  TARGET: 指定要生成的目标文件名
  Qt+=: 添加额外的模块支持,例如Qt -= QtCore;Qt += network,phonon,xml,thread
  DEFINES: 添加额外的宏定义,如win下需要的export等
  DEPENDPATH: 添加以来的路径
  INCLUDEPATH: 添加头文件包含路径
  HEADERS: 需要包含的头文件
  SOURCES: 需要包含的源文件
  FORMS: 需要包含的ui文件
  RESOURCES:需要包含的资源文件
  LIBS:依赖库的路径和名称 -L{xxdirxx} -l{xxnamexx}
  CONFIG: 添加配置,如warn_on debug_and_release plugin
  TRANSLATIONS: 多国语言支持文件
  INSTALLS: 要安装的文件
  target.path: 安装的路径
  #在pro文件支持environment variables和自定义变量
  #如sources.file +=

SOURCESSOURCES

HEADERS
  #sources.path =

DESTIN_DIR 
  #INSTALLS += target source 
  defineReplace(xxx): xxx为变量 ,此函数可以返回一个变量值如:DESTIN_DIR   #INSTALLS += target source   defineReplace(xxx): xxx为变量 ,此函数可以返回一个变量值如:

xxx()
exists(file1,file2){error()}:检查文件是否存在

猜你喜欢

转载自blog.csdn.net/weixin_39609623/article/details/83021696