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()}:检查文件是否存在