1. GNU make 介绍
make通过比较对应的文件的最后修改时间,来决定哪些文件需要更新,哪些文件不需要更新。
当使用make工具进行编译时,工程中以下几种文件在执行make时会被编译:
- 所有的源文件没有被编译过,则对各个C源文件进行编译链接,生成可执行文件。
- 每一个在上次执行make之后修改过的C源文件在本次执行make时将会被重新编译。
- 头文件在上一次执行make之后被修改,则所有包含此头文件的C源文件在本次执行make时将会被重新编译。
2. makefile 规则介绍
TARGET...:PREREQUISITES
COMMAND
....
或者
TARGET...:PREREQUISITES;COMMAND
COMMAND
....
目标:依赖
[tab]命令
TARGET: 规则的目标,是最后需要生成的文件名或者为了实现这个目的中间过程文件名。
也可以是一个make执行的动作的名称,比如目标clean.
PREREQUISITES: 规则的依赖,生成规则目标所需要的文件名列表。(依赖并不是必须的,比如clean)
COMMAND:
- 规则的命令行单独行出现时,每一个命令行必须以[tab]字符开始。
- 当命令与目标依赖同行出现时,需要用“;”分隔。
3. make 如果工作
默认情况下,make执行的是makefile中的第一个规则,该规则的第一个目标成为 最终目的/终极目标。