Bash Makefiles中带有破折号前缀的配方

Bash Makefiles中带有破折号前缀的配方,bash,makefile,gnu-make,Bash,Makefile,Gnu Make,我看到在Makefiles中的一些配方中,命令的前缀是“-”。例如: 配方A(在“-if”中的“-”号) 配方B ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) ( cd builtins && $(MAKE) $(MFLAGS) $@ ) -( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ ) -for libdir in ${LIB_SUBDIRS}; do \ (cd $$li

我看到在Makefiles中的一些配方中,命令的前缀是“-”。例如:

配方A(在“-if”中的“-”号)

配方B

( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ )
( cd builtins && $(MAKE) $(MFLAGS) $@ )
-( cd $(SDIR) && $(MAKE) $(MFLAGS) $@ )
-for libdir in ${LIB_SUBDIRS}; do \
    (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\
done
-( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ )
$(RM) $(CREATED_SUPPORT)
配方C

-size $(Program)
一直试图理解它们是什么,但在bash shell和GNU make手册中都找不到任何东西。有人知道它们的意思吗?这是bash或make的一个特性吗


另外,括号是什么意思?例如-(…)

括号是一个shell功能,在子shell中执行命令。这允许您临时修改环境变量或在后台运行多个命令。
在这里,它用于临时(通过cd)更改工作目录,而不影响后续命令。在这种情况下,也可以通过将
-C
传递到make命令来实现。从make调用make被称为“递归make”,这有点问题(Google“递归make被认为是有害的”).

不,你把
-
@
混在一起了。哦,不……这是忽略错误的事情吗?是的,负号就是这么做的。哦,链接的副本已经解释了……所以我只保留括号的事情。在没有
的情况下。ONESHELL
括号实际上没有添加任何有用的东西;配方中的一行是执行的不管怎么说,都要和食谱中的每一行分开。
-size $(Program)