Answers:
这意味着“不要在输出上回显此命令”。因此,该规则说的是“执行shell命令:
并且不回显输出。
当然,shell命令:
是禁止操作的,因此它的意思是“什么也不做,不要告诉”。
为什么?
这里的技巧是,您将两种不同的语法混为一谈。在使(1)的语法是开始@,这简直是不呼应命令使用的动作。这样的规则
always:
@echo this always happens
不会发射
echo this always happens
this always happens
现在,规则的操作部分可以是任何 shell命令,包括:
。Bash帮助可以在任何地方对此进行解释:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
@:
(不仅仅是@
)询问,那么除了@guestolio的答案之外,它也可能是开发中的剩余部分。就像在Python中编写仅包含的函数一样pass
。它对于存入复制/粘贴的代码块很有用,但是它们通常不应存在很长时间。当以这种方式存根时,文件仍将编译,通过
对于那些对为什么执行此操作感到好奇的人,如果您想假装已完成某件事,这很有用,这样Make不会输出目标“无所事事”。
一个示例是,如果您有一个始终执行的伪目标,并且其中的命令中有一堆条件。您希望至少有一些东西,以防这些情况不正确。
例如(来自Linux的脚本/Makefile.clean):
__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
+$(call cmd,clean)
endif
ifneq ($(strip $(__clean-dirs)),)
+$(call cmd,cleandir)
endif
ifneq ($(strip $(clean-rule)),)
+$(clean-rule)
endif
@: