有人可以在$<
解释$@
和Makefile
的含义吗?
答案 0 :(得分:21)
$<
计算制作规则中的第一个“先决条件”,$@
计算制作规则中的“目标”。
以下是一个例子:
file.o : file.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
在这种情况下,$<
将替换为file.c
,$@
将替换为file.o
。
这些在通用规则中更有用:
%.o : %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
有关详细信息,请参阅this manual。
答案 1 :(得分:6)
$@
是当前规则的目标。
$<
是当前规则的第一个先决条件(“source”)的名称。
例如:
.c.o:
$(CC) -c $(CFLAGS) -o $@ $<
这将扩展为类似的命令:
gcc -c -Wall -o foo.o foo.c