Makefile的学习

第一层

# 第一个Makefile
# 其中#为注释
# 先生成c++的可执行文件
#单文件
# 第一个目标文件是我们的最终目标!递归
# 目标文件 : 依赖文件
main : main.o
	g++ main.o -o main
main.o : main.s
	g++ -c main.s -o main.o
main.s : main.i
	g++ -S main.i -o main.s
main.i : main.cpp
	g++ -E main.cpp -o main.i
# 伪目标
.PHONY :
clear:  #make clear
	rm -rf main.i main.s main.o
# 多文件
test : circle.o cube.o main.o
	g++ circle.o cube.o main.o -o test
circle.o : circle.c
	g++ -c circle.c -o circle.o
cube.o : cube.c
	g++ -c cube.c -o cube.o
main.o : main.c
	g++ -c main.c -o main.o

第二层

变量:
= (替换)
+= (追加)
:= (恒等于)
使用变量:
$(变量名) 替换

TAR = test
# TAR += test1
OBJ = circle.o cube.o main.o
CC := gcc   # 不会改变

$(TAR) : $(OBJ)
	$(CC) $(OBJ) -o $(TAR)
circle.o : circle.c
	$(CC) -c circle.c -o circle.o
cube.o : cube.c
	$(CC) -c cube.c -o cube.o
main.o : main.c
	$(CC) -c main.c -o main.o

.PHONY :
clear:  #make clear
	rm -rf $(OBJ) test

第三层

隐含规则:%.c %.o 任意的.c或者.o文件 *.c *.o 所有的.c .o

TAR = test
# TAR += test1
OBJ = circle.o cube.o main.o
CC := gcc   # 不会改变

$(TAR) : $(OBJ)
	$(CC) $(OBJ) -o $(TAR)
%.o : %.c
	$(CC) -c %.c -o %.o

.PHONY :
clear:  #make clear
	rm -rf $(OBJ) test

第四层

通配符
$^ 所有的依赖文件
$@ 所有的目标文件
$< 所有的依赖文件的第一个文件

TAR = test
# TAR += test1
OBJ = circle.o cube.o main.o
CC := gcc   # 不会改变
RMRF := rm -rf

$(TAR) : $(OBJ)
	$(CC) $^ -o $@
%.o : %.c
	$(CC) -c %.c -o %.o

.PHONY :
clear:  #make clear
	$(RMRF) $(OBJ) test

第五层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑字。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值