简单介绍下Qt 程序的构建过程
构建工具的应用场景(可能情境表达更准确),也就是构建工具是为了解决什么问题?
通常一个商业软件项目,其工程通常由多个源文件、头文件以及外部库组成,利用编译器将工程编译成可执行文件。但是通常在产品开发过程中,不可避免的会添加、修改或者删除(增删改查)源文件(源文件 + 头文件)和库,想要得到能够反映当前工程状态的可执行文件,这就需要重新编译和链接和上一次工程状态相比受影响的文件或者库。经常这种更改-重新编译的过程,通常会发生多次。
引用Qt设计模式中的原文:“为了跟踪工程的全部部分,要求有一种机制来精确地指定涉及输入文件、建立程序时所需的工具、中间目标文件和他们的依赖关系,以及最终的可执行目标文件”。
编译简单的程序,可以直接使用命令行如下,可见对于复杂的工程,这个工作量就显得很繁琐:
g++ 1.cpp 2.cpp -o app
make
用于处理工程建立任务最广泛使用的工具是make,它会从Makefile 文件中读取工程规范的细节,也会读取提供给编译器的指令,Makefile与shell 脚本类似,其中至少会包含如下信息:
- 用于建立某种文件类型的规则(例如:为了从.cpp文件得到.o文件,必须对.cpp文件执行gcc -c指令)
- 源文件列表和头文件列表
- 目标文件指定了必须建立哪些可执行文件(或者库)
- 依赖关系,列出当前某些文件发生改变时,