Qt项目管理(33个规则)

2016-06-20 花莫弦 小小杂货铺LY

一、qmake的介绍

qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。

手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。

qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。

Qmake 编译信息可以通过qmake.conf进行配置。

二、pro、pri、prf、prl

Qt的工程管理文件常用的主要分为pro、pri、prf、prl四种类型的文件,其中pro文件是主文件,另外三种都可以包含在pro文件中,他们的书写规则都遵循qmake的规则。

1、prl链接文件,这个文件主要和生成与使用静态库密切相关。

生成静态库时,我们需要使用 config += create_prl 配置,编译生成和库文件同名的 *.prl 文件;

当工程的TEMPLATE为app时,会自动添加如下指令CONFIG += link_prl,在查找库文件的时候,会尝试找相应的 *.prl 文件进行链接。

2、prf特征文件,这个文件主要标识编译特性,可以使用两种方式加载

1)CONFIG += *prf;

2)load(*prf)。

3、pri配置文件,通常放置一些通用的配置信息,进行工程管理。

4、pro工程管理文件,通常放置与具体工程相关的信息,以及进行层叠式模块的管理。

三、qmake的规则简介

1、使用 # 进行注释;

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

例如 TEMPLATE = app 应用程序
    app -建立一个应用程序的makefile。

lib - 建立一个库的makefile。
    vcapp - 建立一个应用程序的VisualStudio项目文件。
    vclib - 建立一个库的VisualStudio项目文件。
    subdirs -这是一个特殊的模板,创建层叠式子目录,进行工程管理。

(eg:TEMPLATE = subdirs

SUBDIRS += one

SUBDIRS += two)

3、指定生成的应用程序放置的目录  DESTDIR += ../bin ;

4、指定生成的应用程序名 TARGET = pksystem (和pro文件名相同);

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

例如CONFIG+= qt warn_on release,其中+=为追加,=为赋值,warn_on为qmake要把编译器设置为输出警告信息的,release部分告诉qmake应用程序必须被连编为一个发布的应用程序,此处可以使用debug替换。
    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 += . ;

12、源文件编码方式 CODECFORSRC = GBK ;

13、工程中包含的头文件 HEADERS += *.h ;

14、工程中包含的源文件SOURCES += *.cpp ;
    15、工程中包含的.ui设计文件 FORMS += *.ui ;
    16、工程中包含的资源文件 RESOURCES += *.qrc ;

17、LIBS += -L库路径 -l库名 ;

18、定义编译选项,DEFINES += XX,在.h文件中就可以使用:#ifdefine xx;

19、条件编译 (主要区分不同平台和release、debug版本)

win32 {

SOURCES += *.cpp

}

unix {

SOURCES += *.cpp

}

!exists( main.cpp ) {

error( “No main.cpp file found” )

}

win32:debug {

CONFIG += console

}

CONFIG(debug, debug|release) {

}

(注:{必须放置在条件的同一行))

20、message(信息);

21、Include(*.pro/*.pri);

22、Translations Qt语言国际化文件

23、命令行(配置好Qt环境变量)qmake -project 生成pro文件(需要配置qmake.conf手动修改pro文件进行处理),qmake  *.pro生成makefile文件,nmake(区分编译器)编译即可;

24、qmake -tp vc *.pro(-r)生成vs解决方案;

25、qmake -spec macx-xcode *.pro 生成xcode工程文件;

26、warn_off - 编译器会输出尽可能少的警告信息;

27、QT += xml  加入Qt模块;

28、INSTALLS + = target sources   指定安装路径;

29、QMAKE_CXXFLAGS_WARN_ON C++编译器警告;

30、QMAKE_CFLAGS_WARN_ON C编译器警告;

31、W34100  unreferenced formal parameter ;

32、W34189  local variable is initialized but not referenced;

33、contains(config,thread)根据thread是否在config中进行编译。

四、qmake编译选项

1、qmake [options] files

1)-help 列出qmake帮助信息;

2)-o file 直接输出到文件file,如果这个选项没有指定, qmake将会尝试使用合适的文件名作为输出,这依赖于当前的运行模式。
    3)-d 列出qmake的调试信息;

4)-Wall   qmake将会报告所有知道的警告信息。

五、参考链接

1、http://www.kuqin.com/qtdocument/qmake-manual-7.html

2、https://msdn.microsoft.com/en-us/library/ysb0wexw.aspx

http://mp.weixin.qq.com/s?__biz=MzI4NzIwMDQ3OA==&mid=2247483680&idx=1&sn=33844b0bfdb9cae3be8c2137f9e70d11&scene=23&srcid=0620axBP8kO6hzc03MHxqfNV#rd

时间: 2024-10-17 13:19:22

Qt项目管理(33个规则)的相关文章

QT表单样式规则

1.全局匹配: *,匹配所有的Widgets 2.类型匹配:QPushButton.QComboBox等,匹配该类的示例及其子类 3.属性匹配:通过属性来作为过滤选项,对指定的属性(可以是动态属性,例如QObject的setProperty接口),例如 QLineEdit[readOnly="true"] 对于QLineEdit只读的控件来自定义表单样式.也可以使用~=符号来对属性进行限制: 使用~=来测试是否一个QT属性QStringList包含一个执行的QString,例如: *[

Qt项目管理文件(.pro)及其作用详解

http://c.biancheng.net/view/1819.html 在 Qt Creator 中新建一个 Widget Application 项目 samp2_1,在选择窗口基类的页面选择 QWidget 作为窗体基类,并选中“Generate form”复选框.创建后的项目文件目录树如图 1 所示. 图 1 项目文件的目录树 这个项目包含以下一些文件: 项目管理文件 samp2_1.pro,存储项目设置的文件. 主程序入口文件 main.cpp,实现 main()函数的程序文件. 窗

《GNU make项目管理》笔记--规则(2)

1.模式规则 有如下的源代码树: 根目录 |---makefile |----|include| |           |___myutil.h |___|src| |----myutil.c |__main.c 各文件内容如下: main.c: #include <stdio.h> #include "myutil.h" int main(void) { myprint(); return 0; } myutil.h: void myprint(); myutil.c:

《GNU make项目管理》笔记--规则(3)

1.管理程序库 程序库(archive library)是一个特殊的文件,该文件内含其他被称为成员的文件.程序库可用来将相关的目标文件聚集成 较容易操作的单元,例如,C的标准程序库lib.a就包含了许多低级的C函数.因为程序库如此常见,所以make对它们的创建. 维护以及引用提供了特别的支持.程序库的建立及修改可通过ar程序来进行. 下面我们看一个例子,程序包结构如下: 根目录 |---makefile |----|include| |           |___myutil.h |     

Qt *.pro编写一般规则

qmake 之 CONFIG 与 QT 乱谈 看qtcn论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 写来写去,发现越写越乱,就这样吧,反正主要的内容很简单. dbzhang800 20101116 从哪儿开始呢? 不妨先看个例子吧: #include <QtCore/QCoreApplication>#include <QtCore/QDebug>int main(int argc, char** argv){QCoreApplication

QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)

前两天入手了一块2.8’的tft液晶显示屏,于是和树莓派连了一发,成功将命令行显示在了这块小的可怜的屏幕上之后,觉得这屏幕就显示个黑白内容太浪费了,于是考虑开发一个”脸”(图形用户界面,GUI).首先考虑用C语言或者Python来堆图形界面,但是发现不管是C语言的图形库SDL亦或者OpenGL来堆这货都有点麻烦,毕竟我也不是想显示个太过于复杂的图形界面在那块屏幕上,只是显示一个最基本的文字数字就满足了.于是考虑到QT库.之前曾经学过一段时间的QT For Win32,那个环境很好搭建,从http

【java规则引擎】规则引擎RuleBase中利用观察者模式

(1)当RuleBase中有规则添加或删除,利用观察者模式实现,一旦有变动,规则引擎其他组件也做出相应的改变.(2)学习思想:当一个应用中涉及多个组件,为了实现易扩展,解耦思想.可以利用观察者模式实现.基于易变动的数据结构中加入监听者,监听者依据被监听者的变动动作,定义自己的动作.在监听者内部通知其他组件做出相应改变.实现面向对象的思想.组建之间实现了解藕. 一:被监听数据,也就是规则网络RuleBase的接口定义 1 package com.nonbankcard.commons.doorls

QT笔记之不规则窗口的实现

QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com/s/1i5JkIot .h 1 #ifndef QANORMALYDLG_H 2 #define QANORMALYDLG_H 3 4 #include <QWidget> 5 #include "ui_qanormalydlg.h" 6 7 class QAnormalyD

Qt编程之实现在QFileDialog上添加自定义的widget

上网搜索找到的方法如下: http://www.qtforum.org/article/20841/how-to-add-a-qwidget-in-qfiledialog.html#post78422 http://www.qtcentre.org/threads/42858-Creating-a-Custom-FileOpen-Dialog http://stackoverflow.com/questions/16987916/add-widgets-to-qfiledialog 其实前两个链