当前位置: 首页 > news >正文

第五课、Qt Creator 工程介绍------------------狄泰软件学院

一、Qt Creator 的管理方式

1、Qt Creator以工程项目的方式对源码进行管理

2、一个Qt Creator工程包含不同类型的文件

(1)、 .pro 项目描述文件

(2)、 .pro.user用户配置文件

(3)、 .h头文件

(4)、 .cpp 源文件

(5)、.ui 界面描述文件

(6)、资源文件(图片、音频等)

二、关于 .pro项目描述文件

1、.pro项目描述文件的基本组成

(1)、# : 注释起始符

(2)、QT : 模块声明

(3)、TARGET : 可执行文件名

(4)、TEMPLATE : 程序模板声明

(5)、SOURCES : 源码文件声明

(6)、HEADERS : 头文件声明

(7)、FORMS : 界面文件声明

(8)、RC_FILE : 资源文件声明

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

(1)、INCLUDEPATH : 头文件搜索路径

(2)、CONFIG : 设定项目的配置信息和编译选项

(3)、LIBS : 添加第三方库文件

(4)、DEFINES : 定义编译宏

3、CONFIG : 设定项目的配置信息和编译选项的常用选项

(1)、debug : 构建debug版的可执行程序

(2)、release: 构建release版的可执行程序

(3)、debug and release : 同时构建debug和release版

(4)、warn_on : 尽可能多地输出警告信息

(5)、warn_off :不输出警告信息

4、.pro项目文件的本质:Qt中与平台无关的Makefile文件

#-------------------------------------------------
#
# Name:  Qt Creator Project Demo
# Author:Santa Claus 
# Date:  2016-04-22
#
#-------------------------------------------------

QT += core gui  //表示项目需要QtGui和Qtcore两个模块,Qt默认包含这两个模块
                //还可以添加的模块有:widgets、network、xml、quick、multimedia、SQL、
                //webkit等,可以参考QtSDK(在Assistant的索引模式中,输入"variables"
                //找到变量“QT”,并点击相应的链接进去)

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  //当Qt5之前,没有独立的QtWidgets模块
                                                 //从Qt5之后,QtWidgets从QtGui模块中分离出来了

TARGET = HelloWorld   //目标文件名,一般与项目文件名一样
TEMPLATE = app        //用来设定项目的构建类型,如果没有设置,会按默认“应用”来构建项目,主要模板:
                      //1. app:默认的模板,qmake会生成一个构建应用的Makefile
                      //2. lib:库,构建动态库或静态库的Makefile
                      //3. subdirs:子目录项目,qmake会根据SUBDIRS变量生成一个Makefile,该Makefile
                      //            包含构建子目录的逻辑,子目录内必须有pro文件存在
                      //4. vcapp: 生成一个Visual Studio的项目文件(.vcproj)可供VS使用
                      //5. vclib:生成一个VS的动态库或静态库
                      //6. vcsubdirs,会生成一个Vs的解决方案文件(.sln),里面包含每个子目录对应的
                      //              项目文件(.vcproj),可以用VS打开这个解决方案

INCLUDEPATH += E:/BCC/include \     //INCLUDEPATH:指定第3方库的头文件目录,使用相对路径时是从这个.pro
               E:/VC/include        //             文件本身所在目录开始的。

SOURCES += Main.cpp \               //SOURCES变量:用来指定项目所包含的源文件,多个源文件用空格隔开,
           HelloWorld.cpp           //             如果一行写不下,可以“\”来换行

HEADERS += HelloWorld.h             //指定头文件,多个头文件之间用空格隔开

FORMS   += HelloWorld.ui            //FORMS:用来设置要用到的界面文件

RC_FILE += MyIco.rc                 //RC_FILE:用来设置要用到的资源文件

LIBS    += -LE:/MyLib/lib -lmath    //LIBS:第3方的库文件(不是头文件)
                                    //      其中,-L前缀表示一个库目录,如E:/MyLib/lib
                                    //            -l(小写l)指定一个具体的库,如math
                                    //       

CONFIG  += warn_on debug            //CONFIG:配置信息,此处表示尽可能详尽警告信息,同时构建Debug版
                                    //1. qt:默认配置包含这个配置,可以用CONFIG -= qt去掉
                                    //2. release: 构建release版本
                                    //3. debug:  构建debug版本
                                    //4. debug_and_release:同时构建release和debug版。debug、release
                                    //                      debug_and_release这几个选项,哪个是最后
                                    //                      一个配置,就使用哪个
                                    //5. warn_on和warn_off:打开或关闭警告信息

#
# if 'debug' option is set for CONFIG
#
CONFIG(debug) {                     //判断是否debug版
    DEFINES += DEBUG_LOG           
    SOURCES += DebugLog.cpp
    HEADERS += DebugLog.h
}

三、项目文件

1、一般来说,项目文件的描述都使用相对路径

2、而相对路径是相对于项目文件本身而言

3、Qt Creator 将项目文件作为目标文件

4、注意

(1)、Qt Creator 在打开项目文件时会同时生成.pro.user文件

(2)、.pro.user文件包含一些与Qt相关的本地配置信息

(3)、当需要在不同计算机之间移动项目源码时,建议删除.pro.user文件

四、一些工程中的概念

1、构建(build)

 (1)、对项目中的所有文件进行编译,最终生成可执行程序

2、Debug版

(1)、可以进行调试的构建版本

(2)、可执行程序中包含调试信息运行效率不高

3、Release版

(1)、最终发布的应用程序构造版本

(2)、无调试信息,运行效率高

五、小结

(1)、Qt Creator以工程项目的方式对源码进行管理

(2)、一个Qt Creator工程包含不同类型的文件

(3)、.pro文件用于配置和组织整个项目的相关信息

(4)、.pro 是Qt中与平台无关的Makefile文件

(5)、Qt Creator 提供了开发所必备的快捷高效的功能

 

转载于:https://www.cnblogs.com/gui-lin/p/6386088.html

相关文章:

  • PL/pgSQL RETURNS TABLE 例子
  • 贝塞尔曲线学习
  • 2007浙大复试上机考试题目2--统计字符
  • static作用(修饰函数、局部变量、全局变量)
  • 18 Issues in Current Deep Reinforcement Learning from ZhiHu
  • PC 微信扫码登陆
  • 创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
  • 欢迎大家关注民工哥个人微信公众号
  • 我这样减少了26.5M Java内存!
  • JAVA 命令行参数解析,org.apache.commons.cli的使用
  • 几款网络测试工具总结
  • CentOS7 添加路由命令
  • IDEA web项目部署运行Tomcat
  • Maven国内高速镜像
  • 如何优雅的拔盘?
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 一些 DOM 的知识点
  • learning koa2.x
  • Mysql数据库的条件查询语句
  • Nacos系列:Nacos的Java SDK使用
  • passportjs 源码分析
  • vue-cli3搭建项目
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 聊聊sentinel的DegradeSlot
  • 前言-如何学习区块链
  • 入手阿里云新服务器的部署NODE
  • 协程
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • (0)Nginx 功能特性
  • (1) caustics\
  • (2015)JS ES6 必知的十个 特性
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (分布式缓存)Redis哨兵
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net 6.0 处理跨域的方式
  • .NET Framework杂记
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET MVC之AOP
  • .NET 常见的偏门问题
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net6使用Sejil可视化日志
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • [ NOI 2001 ] 食物链
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [autojs]autojs开关按钮的简单使用