TARGET:Dependency file
COMMOND
TARGET:Dependency file
COMMONDTARGET:Dependency file
COMMOND其中:COMMOND必须以【TAB】字符作为本行的开头!
例如:
file1:file1.o file2.o
gcc fie1.o file2.o -o file1
file1.o:fie1.c head1.h
gcc -Wall -O -g -c file1.c -o file1.o
file2:file2.c head2.h
gcc -Wall -O -g -c file2.c -o file2.o
clean:
rm file1.o file2.o
注:像clean这种没有第一个目标文件的直接或间接关联,那么它后面的命令不会被自动执行。可以“make clean”来执行
变量的定义与赋值:
1.递归展开定义:可以引用其之前没有定义的变量,也就是其引用的变量在其之后定义。会造成无穷循环。
格式如下:
Var:variable
2.直接展开定义:变量值对另外变量的引用在定义时被展开。同时不能对其后定义的变量进行引用。
4.替换引用定义:
例如:
foo:=a.o b.o c.o
bar:=$(foo:.o=.c)
bar的值就为“a.c b.c c.c ”
常用的自动变量:
$@:表示当前规则中的问正目标文件
$<:表示当前规则中第一个依赖文件名
$^:当前规则中的所有文件列表
例如:
exc=varibale1.o variable2.o variable3.o
obj1= variable1.c head1.h
obj2=variable2.c head2.h
obj3=variable3.c
CC=gcc
CFLAGS= -Wall -O -g -c
Target:$(exc)
$(CC) $^ -o $@
variable1.o:$(obj1)
$(CC) $(CFLAGS) $< $@
variable2.o:$(obj2)
$(CC) $(CFLAGS) $< $@
variable3.o : $(obj3)
$(CC) $(CFLAGS) $< $@
环境变量:区分系统环境变量和make的环境变量
VPATH
Makefile常用函数:
$(patsubst A,B,text) :此函数时将文本“text”中符合格式为“A”的字符,用格式“B”替代。参数“A”经常使用模式通配符%来代表一个单词里的若干字符。
次函数经常用于文件后缀名的转化。例如:$(patsubst,%.c,%.o,$(var))
$(word N,text):此函数的作用是将“text”中的第N个单词取出,并返回这个单词。
Makefile与shell:如果函数返回结果中存在换行符,那么将其替换为空格,并去掉末尾的回车符号。
例:Var1=$(shell pwd)
Makefilede 语法:显示规则、隐式规则、静态模式规则。
Makefile自动编写工具