脚本语言:Makefile
Linux C/C++ 必须要使用的脚本
- 创建文本文档 名字为Makefile
- ’# 是注释
一、显示规则
目标文件:依赖文件
[TAB] 指令
第一个目标文件是我们的最终目标!!!*
伪目标: .PHONY:
目标文件:依赖文件
[TAB] 指令
hello.i:hello.c
gcc -E hello.c -o hello.i
hello.S:hello.i
gcc -S hello.i -o hello.S
hello.o:hello.S
gcc -c hello.S -o hello.o
hello:hello.o
gcc hello.o -o hello
根据 第一个目标文件是我们的最终目标!!!
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
二、变量
= (替换)
+= 追加
:= (恒等于)
使用变量 $(变量名) 替换
TAR = test
CC := gcc
OBJ = hello.o
$(TAR):$(OBJ)
$(CC) $(OBJ) -o hello
hello.o:hello.S
$(CC) -c hello.S -o hello.o
hello.S:hello.i
$(CC) -S hello.i -o hello.S
hello.i:hello.c
$(CC) -E hello.c -o hello.i
.PHONY:
clean:
rm -rf hello.i hello.S $(OBJ) $(TAR )
三、隐藏规则
%.c %.o 任意的.c .o *.c *.o 所有的.c .o
TAR = test
CC := gcc
OBJ = hello.o
$(TAR):$(OBJ)
$(CC) $(OBJ) -o hello
%.o:%.c
$(CC) -c %.c -o %.o
.PHONY:
clean:
rm -rf hello.i hello.S $(OBJ) $(TAR )
四、通配符
$^ 所有的依赖文件
$@ 所有的目标文件
$< 所有的依赖文件的第一个文件
TAR = test
CC := gcc
OBJ = hello.o
RMRF := rm -rf
$(TAR):$(OBJ)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $^ -o $@
.PHONY:
clean:
$(RMRF) hello.i hello.S $(OBJ) $(TAR )