博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt工程管理
阅读量:5296 次
发布时间:2019-06-14

本文共 2627 字,大约阅读时间需要 8 分钟。

Qt Creator工程管理(出处唐老师的视频教程,此处仅用作复习方便,所以整理出来)

Qt Creator以工程项目的方式对源码进行管理
一个Qt Creator工程包含不同类型的文件

.pro项目描述文件

.pro.user用户配置描述文件 //由Qt Creator自动生成的,
//所以说它里面的配置信息不需要我们手工的去修改,由Qt Creato自动去维护
.h头文件
.cpp源文件
.ui界面描述文件
资源文件(图片,音频等)

.pro项目描述文件的基本构成

-#-注释起始符
-QT-模块声明 :指明当前项目中需要用到哪些模块
-TARGET-可执行文件名
-TEMPLATE-程序模板声明
-SOURCES-源码文件声明
-HEADERS-头文件声明
-FORMS-界面文件声明
-RC_FILE-资源文件声明

.pro项目描述文件中的高级变量

-INCLUDEPATH-头文件搜索路径
-CONFIG-设定项目的配置信息和编译选项
-LIBS-添加第三库文件
-DEFINES-定义编译宏

CONFIG配置

CONFIG用于设定项目的配置信息和编译选项
CONFIG的常用选项
-debug-构建debug版本的可执行程序
-release-构建release版本的可执行程序
-debug_and_release-同时构建debug版和release版
-warn_on-尽可能多的输出警告信息
-warn_off-不输出警告信息

.pro文件的本质为Qt中的Makefile文件

.pro文件为Qt平台上的Makefile。那这种Makefile能够真正的知道编译器来进行项目编译吗?

.pro文件其实办不到,既然办不到为什么说它是Makefile呢?它其实做了一个中间层的转换
.pro通过qmake这个Qt平台提供的命令行工具之后,就会生成具体平台上的Makefile文件
同一个.pro项目描述文件通过不同平台的qmake就能生成不同平台的Makefile文件。之后在不同
平台下调用当前平台的c++编译器就可以编译生成当前平台的可执行程序。这就是Qt所谓的跨平台开发原理了。

Qt用于屏蔽不同操作系统一些细节上的面的差异,提供一个统一的平台给开发者。开发者在这个统一的平台上写的

代码就可以编译到不同平台的上面去。
屏蔽的手段就是提供一些抽象的文件出来。比如说,.pro项目描述文件(其实就是抽象出来的Makefile文件)

接下来分析一个.pro文件的实例:

/*
Qt是一个关键变量,作用是模块的声明,此处使用的是两个模块core、gui
Qt不仅仅是一个界面开发库,它可以说是一个开发平台,它不仅仅提供开发界面需要的一些类,还
提供了比方说数据库连接类、多线程类、网络连接类等等。因此在Qt中必须将这些类分到不同的模块
里面。一些叫做核心模块,一些叫做gui模块。很显然,当前项目中将会用到Qt的一些核心类、界面开发类
*/
QT += core gui

/*

当前使用的Qt版本大于4,则执行后面那条语句。假设当前使用的Qt版本是5,这个时候就需要告诉Qt,
我们还需要使用一个模块,叫做widgets
*/
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

/*

TARGET指明最后可执行文件名,在windows下为HelloWorld.exe,在linux下为HelloWorld.out
TEMPLATE:指明HelloWorld是一个什么类型的程序,在此指明它是一个app,也就是一个可执行程序。
换句话说当前的项目需要编译出来的是可执行程序,而不是库文件
*/
TARGET = HelloWorld
TEMPLATE = app

/*指明头文件的搜索路径*/

INCLUDEPATH += E:/BCC/include \
E:/VC/include

SOURCES += Main.cpp \

HelloWorld.cpp

HEADERS += HelloWorld.h

FORMS += HelloWorld.ui

RC_FILE += MyIco.rc

/*

用来指明需要用到的外部库,这个外部库放在此路径下。当编译完成后,需要进行链接时就可以搜索
对应的路径找一些库文件
*/
LIBS += -LE:/vlc-1.11/sdk/lib

/*CONFIG用于设定项目的配置信息和编译选项*/

CONFIG += warn_on debug

#

# if 'debug' option is set for CONFIG
#
/*测试CONFIG中有没有设置debug信息。如何进行测试呢,利用CONFIG(debug)
如果设置了,会做什么事情呢?
首先,定义一个宏,宏的名字为DEBUG_LOG;并且告诉编译器编译编译两个新文件:DebugLog.cpp,DebugLog.h*/
CONFIG(debug) {
DEFINES += DEBUG_LOG
SOURCES += DebugLog.cpp
HEADERS += DebugLog.h
}

项目文件

一般来说,项目文件中的描述符都使用相对路径。而相对路径是相对于项目本身而言的。
Qt Creator将项目文件作为目标文件
注意:
1、Qt Creator在打开项目文件的同时会生成.pro.user文件
2、.pro.user文件包含一些与Qt相关的本地配置信息
3、当需要在不同计算机之间移动项目源码时,建议删除.pro.user文件

.pro.user文件是项目配置的一部分,只不过这一部分是由Qt Creator来维护的,与开发者没有任何的关系。

所以说没必要打开这个文件来阅读、分析、修改,这件事是Qt Creator的事情,与开发者无关。
为什么需要.pro.user这个文件呢?
因为我们非常有可能将整个项目从windows操作系统拷贝到linux操作系统下接着进行开发,所以说非常有
必要用另一个文件来记录本地的信息。然而这些本地的信息对于开发者来说,又必须是隐蔽的。
Qt为什么要这么做?
因为它想屏蔽不同平台的一些差异,使开发者始终感觉面对统一的平台来开发应用程序

转载于:https://www.cnblogs.com/-glb/p/10485565.html

你可能感兴趣的文章
ArrayList排序
查看>>
Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
查看>>
JMS消息头
查看>>
linux 命令 改变指定目录以及其子目录下的所有文件的拥有者和群组
查看>>
动态查找树比较
查看>>
MapReduce的初次尝试
查看>>
thinkphp框架 中 ajax 的应用
查看>>
C/C++中程序在使用堆内存时的内存复用问题
查看>>
[置顶] SpecDD(混合的敏捷方法模型)主要过程概述
查看>>
JAVA排序(一) Comparable接口
查看>>
敏捷个人 - 敏捷个人价值观,欢迎提出你的意见和你的价值观
查看>>
iTerm2 + Oh My Zsh
查看>>
MongoDB安装配置及使用
查看>>
判断9X9数组是否是数独的java代码
查看>>
CSS中设置border:none和border:0的区别
查看>>
什么是Web?及web服务器原理
查看>>
vue权限控制菜单显示
查看>>
字符串详解
查看>>
HTML标签
查看>>
ExtJS学习之路第一步:对比jQuery,认识ExtJS
查看>>