教程: https://www.bilibili.com/video/av58382901
第一层:显式规则
--目标文件:依赖文件
[TAB]指令
--第一个目标文件是所需的最终目标 【逆序--递归】
--无目标文件的指令:伪目标
.PHONY:
make之后跟的指令:该指令执行的动作
第二层:变量和常量 — $(XXX) 引用
-- = 替换
-- += 追加
-- := 恒等于(常量,不能替换追加)
第三层:隐含规则
%.c %.o : 任意的
*.c *.o : 所有的
第四层:通配符
$@ 所有目标文件
$* 不包含扩展名的目标文件名称
$^ 所有依赖文件
$+ 所有依赖文件,以空格分开,并以出现的先后为序。可能包含重复的依赖文件
$< 第一个依赖文件名称
$? 所有时间戳比目标文件晚的依赖文件,并以空格分开
第五层:函数
详见葵花宝典 :
https://blog.csdn.net/yredh_114/article/details/69389134