【变量】=【值】#普通赋值
【变量】:=【值】#覆盖之前的值
【变量】?=【值】#如果没有赋值过,则赋值等号后的值
【变量】+=【值】#添加等号后面的值
【目标文件】:【依赖文件】#递归性质,最终目标为第一行的目标文件
【命令】#命令前有一个tab
【目标文件1】:【依赖文件1】#目标文件1一般包含在第一行依赖文件里
【命令1】
【目标文件2】:【依赖文件2】#目标文件2一般包含在第一行依赖文件里
【命令2】
【clean】
【删除命令】
【install】
【安装命令】
【uninstall】
【卸载命令】
例:
FILE = main.o func1.o func2.o
hello: $(FILE) #等同于 hello: main.o func1.o func2.o
gcc $(FILE) -O hello
main.o: main.c
gcc -c main.c
func1.o: func1.c
gcc -c func1.c
func2.o: func2.c
gcc -c func2.c
clean:
rm $(FILE) hello
install:
cp hello /usr/local/hello
uninstall:
rm hello /usr/local/hello
变量赋值"="与":="的区别
1、“=”
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:
x = foo
y = $(x) bar
x = xyz
在上例中,y的值将会是 xyz bar ,而不是 foo bar 。
2、“:=”
“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。看例子
x := foo
y := $(x) bar
x := xyz