[本文为学习笔记,仅供参考,如有好的建议欢迎指出!]
makefile规则:
目标文件:依赖文件
[tab] 命令 //命令前必须有一个tab
exp:
test:main.c
gcc main.c -o test
隐式规则:
%.o :%.c // ‘%’ 同名匹配
变量 --类似于C中的宏,引用方式$(ARG)
变量名 = 值 (引用变量可在之后定义)
exp:
A = $(B)
B = hello
output:
echo $(A)
result: hello
变量名 := 值 (立即对引用赋值)
exp:
A = $(B)
B = hello
output:
echo $(A)
result: (空)
变量名 += 值 (追加赋值)
exp:
A = $(B)
B = hello
A += world
output:
echo $(A)
result: hello world
变量名 ?= 值 (若未定义,则定义并赋值,否则不变)exp:
A = hello
A ?= nice
B ?= god like
output:
echo $(A)
echo $(B)
result: hello
god like
预定义变量
局部变量 --只能在规则内部用
$^ 依赖列表
$@ 目标
$< 依赖列表中的第一个
exp:
OBJS
:= a.c
OBJS += b.c
TARG = s.o
$(TARG) : $(OBJS)
gcc $^ -o $@ // ==
%.o: %.c gcc $^ -o $@
最后附上一个综合例子
</pre><pre name="code" class="cpp"> 1 TAG := test
2 OBJ := main.o fun1.o fun2.o
3
4 $(TAG):$(OBJ)
5 gcc $^ -o $@
6 %.o : %.c
7 gcc $^ -o $@ -c
8
9 clean:
10 rm -f $(OBJ)
11 rm -f $(TAG)
12
13 .PHONY: clean
2万+

被折叠的 条评论
为什么被折叠?



