- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
QT的配置文件
先给出一个我当前项目的配置文件,再一一解释:myproject.proTEMPLATE = appQT += core guisqlCONFIG += debug MODULE_GUARD_DOGDEFINES += MODULE_GUARD_DOGTARGET = wmsDESTDIR = ./binDLLDESTDIR = ./binDEPENDPATH += .INCLUDEPATH += ./tmp ./include ./modules/usbphoneINCLUDEPATH *= .LIBS += -Llib -lGxUsbMOC_DIR = ./tmpOBJECTS_DIR = ./tmpUI_HEADERS_DIR = ./tmpRCC_DIR = ./tmpinclude(wms.pri)include(modules/usbphone/usbphone.pri)win32:RC_FILE = wms.rcMODULE_GUARD_DOG{HEADERS += GuardDog.hSOURCES += GuardDog.cpp}C++的工程往往有两大类,一是应用程序,另一个则是动态(静态)库。TEMPLATE参数差不多就是标识这个工程的类型了。它有app、lib、subdirs三种类型。前两种类型与两类工程相关,subdirs则是用于配置子项目的。当一个工程比较复杂时,可能会将其分为多个项目,项目之间又相关关联,此时可以写一个统领全局编译配置的文档,其模板类型就是subdirs,意思是说,当前的这个文件呢,只负责协调子项目之间的编译,不包含具体的编译事宜。子项目下面也会有.pro文件,并且要负责其项目中的源文件编译。subdirs类型在Qt的源码中用的比较广泛,毕竟是大工程。呵呵。QT参数表示当前项目中使用到了哪些QT的模块。core表示核心模块,这是整个QT框架的基础,所有的QT项目都会默认包含这个模块。 gui是图形用户界面模块,这个也是默认包含的项目中的,毕竟GUI是QT的强项吧。sql是数据库模块。当前的项目中只使用到了这三个模块,另外,QT 还有netword、opengl(3D图形库)、phonon(多媒体库)、svg、xml、webkit(浏览器引擎)等模块。CONFIG参数用于指定当前项目配置及项目被编译时的一些选项——如项目是以debug还是release模式的编译。其常规值有 debug、release、debug_and_release、build_all、ordered、warn_on、warn_off。 CONFIG可以是一个或者多个这样的值,也就是说用户可以设置:CONFIG += debug release #注意,不同的值是用空格隔开的release: 是不调试程序,直接编译和连接库文件; 不会生成另一个目录等调试信息debug: 编译和连接QT库时调试;同时给它赋予debug和release值可不是相像是的那样让项目同时在两种模式下编译哦,debug参数会覆盖release值的,也就是说,在这样的配置下,项目还是只会在debug模式下编译,除非使用了debug_and_release值。另外,build_all与 debug_and_release差不多是一样的,warn_on、warn_off是开启或者关闭编译警告。剩下要说的是ordered,它的意思是按顺序编译。这个值要与TEMPLATE中的subdirs值配合使用,意思按.pro文件中的目录顺序编译。说完了CONFIG的常规值,再来说说不常规的值——常规以外的,都是不常规的啦。用户其实可以给CONFIG赋予任意合法字符窜的。如上面配置文件中就有一个MODULE_GUARD_DOG(加密狗模块),当然,这个模块并非QT所有,而是我自己项目中的模块。MODULE_GUARD_DOG 除了出现在CONFIG中以外,还在DEFINEDS和文件最后面出现过。CONFIG中的MODULE_GUARD_DOG与DEFINEDS中的 MODULE_GUARD_DOG其实没有什么关联,若要说有,那也只是它们刚好服务于同一个模块而言。但是CONFIG中的 MODULE_GUARD_DOG却让qmake执行了文件最后面大括号中的内容。在qmake配置文件有条件判断语句,类似于if(xxx){}之类了。不过,不需要if。那么 MODULE_GUARD_DOG{} 语句的意思就是当文件中定义了MODULE_GUARD_DOG的时候,就执行括号中的内容(把头文件和源文件编入到编译范围中)。类似的判断还有很多,qmake提供一些判断函数,如isEmpty()、contains()等,详细的请参数qmake操作手册。DEFINES参数:其作用嘛,就是
文档评论(0)