-
$@指代当前目标,就是Make命令当前构建的那个目标。比如,make foo的 $@ 就指代foo。
-
\< 指代第一个前置条件。比如,规则为 t: p1 p2,那么< 就指代p1。
-
? 指代比目标更新的所有前置条件,之间以空格分隔。比如,规则为 t: p1 p2,其中 p2 的时间戳比 t 新,?就指代p2。
-
$^ 指代所有前置条件,之间以空格分隔。比如,规则为 t: p1 p2,那么 $^ 就指代 p1 p2 。
参考链接:https://www.ruanyifeng.com/blog/2015/02/make.html
例子:
bash
SRCS = $(wildcard *.c *.s *.cpp)
OBJS = $(SRCS:.c = .o .cpp = .o .s = .o)
CC = arm-linux-gnueabihf-g++
#INCLUDES = -I/×××
#LIBS = -L/×××
CCFLAGS = -g -Wall -O0 -lc -lstdc++
hook : $(OBJS)
$(CC) $^ -o $@
%.o : %.c %.s %.cpp
$(CC) -c $< $(CCFLAGS)
clean:
rm *.o
.PHONY:clean