我看到在Makefiles的某些配方中,命令的前缀是“-”。例如:
食谱A(“-if”中的“-”)
-if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \
$(RM) parser-built y.tab.c y.tab.h ; \
fi
食谱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的功能吗?
P.S .:另外,方括号是什么意思?例如。 -(…)
答案 0 :(得分:1)
括号是shell的功能,可在子shell中执行命令。这使您能够临时修改环境变量或在后台运行多个命令。
在这里,它用于临时(通过cd)更改工作目录,而不影响后续命令。在这种情况下,也可以通过将-C
传递给make命令来实现。从make调用make称为“递归make”,并且有些问题(Google“认为递归make有害”)。