用make工具自动化构建
只要记下修改过哪些文件,就可以很快地用gcc
编译程序。这是一件很麻烦的事,但很容易自动化。想象有一个文件,这个文件是由另一个文件生成的,比如从源文件编译过来的目标文件:
你怎么知道thruster.o文件是否需要重新编译呢?只要看一下这两个文件的时间戳就行了,如果thruster.o文件比thruster.c文件旧,就需要重新创建thruster.o;否则就说明thruster.o已经是最新的了。
非常简单的规则。如果你掌握了某样东西的简单规则,别多想,自动化它……
make
是一个可以替你运行编译命令的工具。make
会检查源文件和目标文件的时间戳,如果目标文件过期,make
就会重新编译它。
但是做到所有这些事情前,需要告诉make
源代码的一些情况。make
需要知道文件之间的依赖关系,同时还需要告诉它你具体想如何构建代码。
make需要知道什么?
make
编译的文件叫目标(target)。严格意义上讲,make
不仅仅可以用来编译文件。目标可以是任何用其他文件生成的文件,也就是说目标可以是一批文件压缩而成的压缩文档。
对每个目标,make
需要知道两件事:
- 依赖项。
生成目标需要用哪些文件。
- 生成方法。
生成该文件时要用哪些指令。
依赖项和生成方法合在一起构成了一条规则。有了规则,make
就知道如何生成目标。