程序执行过程:预处理,编译,汇编,连接,运行
ESC OSI
.c ---.i
.i-----.s
.s------.o
.o------.out
(文件名为Makefile 无后缀,#是注释 )
显示规则
目标文件:依赖文件
(tab)指令:
&第一个目标文件就是最后生成的文件
hello:hello.o
gcc hello.O -o hello
hello.o:hello.S
gcc -c hello.S -o hello.O
hello.S:hello.i
gcc -S hello.i -o hello.S
hello.i:hello.c
gcc -E hello.c -o hello.i
伪目标:.PHONY clean
clean:
rm -rf hello.i hello.S hello.o hello.i
第二层变量:
$( )
=(替换) +=(追加) :=(恒等于,常量)
{
TAR = test
OBJ = key.o led.o main.o
CC := gcc
}
第三层:隐含规则
%.c(任意的.c文件)
%.o(任意的.o文件)
*.c(所有的.c文件)
*.o(所有的.o文件)
#任意的.c 文件获取任意的.o文件
$(CC) -c %.c -o %.o
第四层:通配符
$^ 所有的依赖文件
$@ 所有的目标文件
$< 第一个依赖文件的名称
$? 所有时间戳比目标文件晚的依赖文件,并以空格分开
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件