Makefile学习笔记

来源:互联网 发布:c语言中unsigned char 编辑:程序博客网 时间:2024/05/29 10:54

[本文为学习笔记,仅供参考,如有好的建议欢迎指出!]

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 $@

.PHONY: clean     //生成伪目标,避免执行make clean时,若当前文件夹存在文件clean时产生冲突


最后附上一个综合例子

</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



0 0