02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)

比较好的关于makefile及在linux下的使用的资料可参考以下链接:《狄泰软件学院》操作系统篇之 - makefile专题
总结放于前:
一个工程编译连接规则是放于Makefile文件中的,qmake是用于在qtcreate下生成Makefile文件的工具,makefile用于描述了整个工程的编译、源码与源码之间如何关联、依赖连接等规则,构建就是按照Makefile定义的规则进行编译生成exe文件,运行就是直接运行exe文件,清除只留下exe文件

1. makefile, make、qmake基础知识


(1)makefile
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。Makefile 有自己的书写格式、关键字、函数,像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。

Makefile 文件描述了整个工程的编译、连接等规则。 其中包括:工程中的哪些源文件需要编译以及如何编译、编译顺序,需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile,编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。

Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile 文件的编写。

(2). make
make是一个命令工具,是一个解释makefile中指令的命令工具。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

(3) qmake
它是一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一 。

qmake能够自动生成 Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。

手写Makefile是比较困难而且容易出错,尤其在进行跨平台开发时必须针对不同平台分别撰写Makefile,会增加跨平台开发复杂性与困难度。qmake会根据专案文件(.pro)里面的信息自动生成适合平台的 Makefile。 开发者能够自行撰写专案文件或是由qmake本身产生。qmake包含额外的功能来方便 Qt 开发,如自动的包含moc 和 uic 的编译规则

以下介绍QtCreator中构建、qmake、运行、清理等区别与联系。

默认qt中执行项目的流程:qmake → 编译 → 运行

2.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文件的规则
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第1张图片02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第2张图片

3.构建

  • 构建: 构建就是编译项目,普通构建是增量编译,只编译有变动部分,同时生成.exe文件,还有许多.o目标文件。
  • 重新构建: 把所有部分都重新编译;
  • 构建和重新构建时如果没有Makefile,会根据.pro文件等生成Makefile后再编译,最后生成.exe,还有许多.o目标文件;
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第3张图片
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第4张图片

    4.运行

  • 运行就是直接运行生成好的.exe文件 ,如果有改动则根据已有的Makefile进行重新编译、执行,否则就直接运行已有的.exe文件;
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第5张图片

5.清除

  • 清理项目, 只留下.exe文件,其余文件被删除掉;
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第6张图片
    02_1_Qt工程实践_QtCreator中qmake、构建、运行、清理等区别与联系(关于makefile, make、qmake基础知识)_第7张图片
    参考地址:参考地址

你可能感兴趣的:(#,Qt工程实践,qt)