Make基本符号

本文将针对Make的基本语法进行讲解

运算符

赋值运算符

Make 中有:=?=+=(追加)以及=四个赋值运算符,其中=?=比较常用,这里总结一下两者的区别:

  • 对于=,变量的值将会是整个Makefile中最后被指定的值,例如:
1
2
3
x = foo
y = $(x) bar
x = xyz

最终,y的值是xyz bar

  • 对于:=,变量的值决定于它在Makefile中的位置,而不是整个Makefile展开后的值
1
2
3
x := foo
y := $(x) bar
x := xyz

最终,y的值为foo bar

变量符号$

单独的$

$的功能比较多,这里一一进行总结,首先是使用变量

1
2
3
4
OBJECTS=main.o hello.o factorial.o

hello: $(OBJECTS)
g++ -o hello $(OBJECTS)

$@、$<以及$\^1

1
all: library.cpp main.cpp
  • $@ evaluates to all,即目标
  • $< evaluates to library.cpp(第一个文件)
  • $^ evaluates to library.cpp main.cpp

参考文献

0%