如何解释 makefile 循环中的 $@ 符号
How to interpret the $@ symbol in a makefile loop
在生成文件中我有这段代码
all clean dep depend print:
for dir in $(DIRS); do \
if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
true; \
else \
exit 1; \
fi; \
done
行中的$@是什么意思
if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
我知道这是一个匹配规则目标文件名的自动变量。这里的目标似乎是一个像取消这样的命令:
cancell:
rm -rf *.o
这是一个自动变量,扩展为导致配方 运行 的目标的名称。在您的例子中,如果您键入 make all
,它会扩展为 all
。如果您输入 make all clean
,它会 运行 两次食谱 -- 第一次,$@
将扩展为 all
,第二次将扩展为 [=15] =].
查看文档 here
在生成文件中我有这段代码
all clean dep depend print:
for dir in $(DIRS); do \
if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
true; \
else \
exit 1; \
fi; \
done
行中的$@是什么意思
if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
我知道这是一个匹配规则目标文件名的自动变量。这里的目标似乎是一个像取消这样的命令:
cancell:
rm -rf *.o
这是一个自动变量,扩展为导致配方 运行 的目标的名称。在您的例子中,如果您键入 make all
,它会扩展为 all
。如果您输入 make all clean
,它会 运行 两次食谱 -- 第一次,$@
将扩展为 all
,第二次将扩展为 [=15] =].
查看文档 here