首页 > 其他分享 >QT-Qt Creator项目概述(四)

QT-Qt Creator项目概述(四)

时间:2022-11-22 16:33:27浏览次数:53  
标签:文件 exe Qt Creator Makefile qmake 编译 构建 QT

前置知识

C++程序执行过程:

预处理:对源程序进行宏代替,条件编译,头文件展开,去除注释;

编译:词法分析、语法分析,语义分析以及优化后产生汇编代码文件;(编译器)

汇编:将汇编代码翻译成机器指令的过程,得到目标文件,windows下是.obj目标文件,Linux下是.o目标文件;

链接:将所有相关文件(库文件,源文件等)链接到一起生成可执行的二进制文件(.exe)。

以gcc为例的指令:

预处理:g++ -E test.cpp -o test.i

编译:g++ -S test.i -o test.s

汇编:g++ -c test.s -o test.o

链接:g++ test.o -o test.exe

一般情况,可以直接使用g++ test.cpp -o test就可以生成可执行程序。

常见编译器:

GUN Compiler Collection(GCC) GC,是大多数类Unix(如Linux、BSD、Mac OS X等)的标准编译器,Windows下的编译环境MingW的核心组成是GCC;

Microsoft C(MS C/MSVC),微软Windows平台Visual Studio自带的C/C++编译器;

Borland Turbo C(Turbo C)

1.依赖库

1.1 Qt库

Qt基本模块:提供Qt在所有平台上的基本功能。

Qt附件模块:实现一些特定功能的提供附加价值的模块。

增值模块:单独发布的提供额外价值的模块或工具。

技术预览模块:一些处于开发阶段,但是可以作为技术预览使用的模块。

Qt工具:帮助应用程序开发的一些工具。

参考:https://www.cnblogs.com/deng-c-q/p/11475422.html

1.2第三方库

示例:添加ffmpeg库

在.pro文件中添加:

INCLUDEPATH += $$PWD/ffmpeg/include  //头文件包含目录

LIBS += -L$$PWD/ffmpeg/lib/ -lavcodec -l avdevice -lavfilter -lavformat   //-L库文件目录 -l库文件

DEPENDPATH += $$PWD/ffmpeg/lib   //lib库目录

2.构建套件(kit)

(工具-选项-构建和运行-构建套件(Kit))

包含众多构建时会用到的工具的工具箱。

Qt version:构建时使用的qmake的版本。QMake可以用于生成Makefile以及各种工程文件,还可以生成VS可以使用的项目文件等。它可以自动解决依赖关系,不用手工写Makefile。而且它是跨平台的。

地址:qt安装目录的bin文件夹下的qmake.exe

编译器:编译C++语言。例入MinGW中的g++,VS中的msvc。

地址:MinGW安装路径下的g++.exe

注:如果你安装的是MinGW版本的qt,那就选择MinGW中的g++。如果是msvc版本的qt,那就选择vs下的msvc。MinGW版本和msvc版本的qt是不互通的,所有要选择对应版本编译器。

Debugger:调试器,有cdb,gdb等。

与编译器一致即可,g++则用gdb,msvc则用cdb。

地址:MinGW安装路径下的gdb.exe

CMake:一个跨平台的安装(编译)工具(这点类似QMake),可以用简单的语句来描述所有平台的安装(编译过程)。

组合套件:选择构建套件(Kit)页,点击添加,然后设置套件名称,按照上述配置顺序添加工具,其他默认即可。

参考链接:https://blog.csdn.net/LUCYcanFire/article/details/126402240

3.版本控制

工具-选项-版本控制:添加git配置:

附加在系统PATH之前:git安装目录的bin文件夹路径

参考链接:https://blog.csdn.net/hebbely/article/details/52495073

4.项目详情

项目工程基类:https://www.cnblogs.com/yadira/p/16663502.html

项目结构概述:

  • qtTest.pro:qmake的工程文件,qmake使用.pro文件生成makefile文件。
  • 头文件:存放项目内所有的头文件*.h。
  • 源文件:存放项目内的所有 C++源码文件*.cpp。
  • 界面文件:存放项目内所有界面文件*.ui。

5.qmake/构建/运行/清除

一个工程编译连接规则是放于Makefile文件中的,qmake是用于在qtcreate下生成Makefile文件的工具,makefile用于描述了整个工程的编译、源码与源码之间如何关联、依赖连接等规则,构建就是按照Makefile定义的规则进行编译生成exe文件,运行就是直接运行exe文件,清除只留下exe文件。

名词解释:

  • Makefile文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、编译顺序,需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。
  • make是一个命令工具,是一个解释makefile中指令的命令工具。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。
  • qmake一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一。qmake能够自动生成 Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。qmake会根据专案文件(.pro)里面的信息自动生成适合平台的 Makefile。qmake包含额外的功能来方便 Qt 开发,如自动的包含moc 和 uic 的编译规则。

Qt Creator中执行项目的流程:

Qmake:

  • qmake:根据之前项目指南创建的项目文件.pro,并且运行qmake[qmake xx.pro]。
  • 生成调试[build-ttt-4_8_6-Debug] 或者发布[build-ttt-4_8_6-Release]目录(这个是影子构建产生的目录),里面含有qmake后生成的Makefile,但此时还未生成.exe。
  • 简单来说对项目qmake操作会重新生成或更新构建目录中的Makefile文件(Makefile文件定义了编译器编译生成exe文件的规则)。

构建:

  • 构建:构建就是编译项目,普通构建是增量编译,只编译有变动部分,同时生成.exe文件,还有许多.o目标文件。
  • 重新构建:把所有部分都重新编译。
  • 构建和重新构建时如果没有Makefile,会根据.pro文件等生成Makefile后再编译,最后生成.exe,还有许多.o目标文件。

运行:

  • 运行就是直接运行生成好的.exe文件 ,如果有改动则根据已有的Makefile进行重新编译、执行,否则就直接运行已有的.exe文件。

清除:

  • 清理项目,只留下.exe文件,其余文件被删除掉。

参考链接:https://blog.csdn.net/Dasis/article/details/121579796

 

标签:文件,exe,Qt,Creator,Makefile,qmake,编译,构建,QT
From: https://www.cnblogs.com/yadira/p/16915537.html

相关文章

  • Qt中的.pro文件
    .pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。.pro文件的写法如下:注释从“#”开始,到这一行结束。模板变量告诉qmake为这个应用程序生成哪种ma......
  • Qt概述
    1.1什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件......
  • Qt之改变窗口背景图片
    基类为Widget的窗口使用加载资源然后右键单击改变样式表改变的背景图片的方式并不好用,原因setStyleSheet()该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗......
  • Qt实践项目打地鼠之----事件重写(四)[附GitHub项目下载地址]
    ​QCoreApplication类的notify()函数的帮助文档给出了5中处理事件的方法:重新实现部件事件处理函数,最为常用,只能处理特定部件的特定事件;重新实现notify()函数,一次只能......
  • Qt实践项目打地鼠之----随机弹出地鼠(三)[附GitHub项目下载地址]
    ​完成了背景图的布局,接下来要处理随机弹出地鼠的程序编写.首先在myitem.cpp中定义一个设置图片路径的函数,如下:voidmyitem::setPic(QStringpath){this->setPixmap(......
  • Qt实践项目打地鼠之----按钮控件实现(五)[附GitHub项目下载地址]
    ​这一篇实现按钮控件的实现.                实现按钮的响应功能无非就是建立信号与槽,这里不能使用右键->转到槽的操作,原因如下.首先在m......
  • Qt编译出错原因----项目保存路径中有中文!!!
    为项目MotorCtrlDemo执行步骤…19:11:50:正在启动“C:\Qt\Qt5.9.0\5.9\msvc2013_64\bin\qmake.exe”E:\参考程序\MotorCtrlDemo\MotorCtrlDemo.pro-specwin32-msvc......
  • 迅为3399开发板Qt蜂鸣器和LED测试
    QLed测试资料在网盘“iTOP-3399开发板\iTOP-3399开发板\02_iTop-RK3399开发资料汇总(不含光盘内容)\05_iTOP-3399开发板Qt应用开发资料\3399开发板QT测试-QtLED......
  • 项目demo —— PyQt5简单画板程序
    文章目录​​前情提要​​​​demo演示​​​​代码​​​​1.Node节点类​​​​2.Canvas画布类​​​​3.Editor编辑器类​​前情提要最近在看强化学习,想着快速做一......
  • Qt编写ERP库存库房发货电子看板
    一、前言有了之前可视化大屏电子看板系统的经验,要做这个ERP库存库房发货电子看板,可以说是水到渠成轻车熟路,技术难度比之前做过的各种大屏系统的子模块都要简单。由于库存......