makefile
makefile的编写规则
makefile的执行规则
永远只生成第一个目标对象
makefile会检测文件的最后一次修改时间,如果可执行程序的修改时间迟于源文件则不需要
编译
声明伪对象:每次都要重新生成
make命令执行的时间可以指定要生成makefile中哪一个目标对象
= ?=若变量不为空赋值 :=立即赋值 +=追加赋值
makefile:
不普通的普通文件
操作系统中有一个命令叫make
Makefile中记录的是一系列的编译规则,当我们执行make命令,那么make这个程序就会到
当前目录下查找makefile文件,然后一步步的解释执行makefile中记录的编译规则,
最终通过这些编译规则,完成项目的整个编译
Makefile的编写:
makefile的编写规则
|生成文件:依赖文件
|[\t] 为了完成生成文件的生成,要执行的命令
main:main.c
gcc main.c -o main
当makefile编写完毕,保存退出后,直接敲击make命令,那么make这命令所对应的程序会到
当前目录下找到makefile文件,然后按照makefile中记录的编译规则来完成最终项目的编译。
因此makefile文件名字只能叫Makefile
Makefile会记录源文件和程序文件的时间信息,如果源文件的最后一次修改时间是在
程序文件之后那么就会重新编译程序,否则将报告程序是最新的而不需要重新编译。
make永远只生成第一个对象,执行完位生成对象所要执行的命令后就退出了,所以不会再去
生成第二个对象
如果makefile有多个要生成的对象,那么就需要在最上边定义一个对象,将要所有生成的
对象都作为这个对象的依赖对象
伪对象:
.PHONY叫声明伪对象,伪对象代表每次都需要重新生成
make可以指定生成要生成的对象
make clean
#makefile 中#开头是注释
makefile 的编写guize
|生成对象:依赖对象
|tab 为了完成生成对象的生成,所要执行的命令
|main:main.c
|gcc main.c -o main.c
.PHONY叫声明伪对象代表每次都要生成
makefile中得预定义变量
在makefile中$符号用于使用一个变量
a=1
b=$a
$@ 冒号左边要生成的对象
$^ 冒号左边所有的依赖对象
$< 冒号右边依赖对象中得第一个
make -C dir
-C 使make的使用选项,功能使进入指定目录下执行make命令
课后调研:makefile中变量赋值有好几种方法
= := ?= += 这四种变量赋值有什么不同