日常开发工作中,制约项目进度的技术问题,多是基础知识不牢靠造成的,任何技术难题,都能分解成一个个的基础知识点。

   使用Qt开发的项目中,很多人连工程文件都看不懂,更不用说写pro文件,如果开发中连这个工程文件都搞不定,编译无法进行,耽误项目的进度。本着解决这个问题,我们开始了对qmake的解读。

一.什么是qmake,以及它的用途

   概念:qmake是一个简化编译程序的工具软件,适用于各个系统平台。

   作用:生成makefile。根据pro文件,很少信息就能生成makefile.

   用法:

qmake -o Makefile hello.pro //生成hello.pro工程的makefile

二.qmake基本用法举例

CONFIG += debug        //编写调试版的程序HEADERS += hello.h     //把头文件包含进工程文件SOURCES += hello.cpp   //把代码文件编写进工程文件SOURCES += main.cpp//针对不同的平台使用不同的文件//解决不同平台下的差异性win32 {    SOURCES += hellowin.cpp}unix {    SOURCES += hellounix.cpp}//若有文件不存在,报错,如下main.cpp不存在!exists( main.cpp ) {    error( "No main.cpp file found" )}//使用控制台输出调试信息win32:debug {    CONFIG += console}

三.解读工程文件中的标签

第一种常用方式:#模块设置,一般设置为app(生成应用程序,默认),#subdirs(生成makefile文件编译subdirs指定的子文件夹)#lib(生成库文件)TEMPLATE = app#指定生成的应用程序放置的目录DESTDIR += ../bin#指定生成的应用程序名TARGET = pksystem#添加或减少CONFIG的配置模块,一般采用默认即可,但是除去debug_and_release模块不会生成debug和release文件夹#CONFIG += releaseCONFIG -= 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

四.Qt引用第三方库的方法

LIBS += -L/usr/local/lib -lmath //链接第三方库INCLUDEPATH = c:/msdev/include d:/stl/include  //指定头文件位置

五.工程配置参数config

CONFIG:指定工程配置和编译参数以下对CONFIG变量做主要介绍:debug:编译有调试信息的可执行文件或则库release:编译不具有调试信息可执行文件或者库(如果同时指定debug release时,只有debug有效)warn_off:关闭大量警告,默认是打开的qt:指应用程序使用Qtdll:动态编译库staticlib:静态编译库plugin:编译一个插件console:应用程序需要写控制台

使用方法

CONFIG = qt release warn_off