前置知识
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