Make是广泛使用于各种用途的美丽而强大的工具。我喜欢它,这只是一个细节。
假设我有一个递归的make配方,定义如下:
submake-cmd:
make ${SUBMAKEGOALS} -C foo
# where I have derived ${SUBMAKEGOALS} earlier
这是症结所在:我可以像这样设置make界面...
$: make submake-cmd SUBMAKEGOALS="foo bar"
-或-
# preferably
make submake-cmd foo bar biz baz
唯一的问题是,如果我计算了${SUBMAKEGOALS}
,那么我就不得不这样写submake-cmd
规则,以避免不可预测的行为:
submake-cmd:
make ${SUBMAKEGOALS} -C foo
exit 1
make将会退出,我将看到make exit出现错误。
使用make递归时,必须有某种方法可以清除make目标或表明make
已成功完成...
有人有什么想法吗?
答案 0 :(得分:1)
最好
make submake-cmd foo bar biz baz
您可能在想什么。如果您想传递未知数量的目标以进行子制造,则可以这样进行:
ifneq ($(sub),)
.DEFAULT:
$(MAKE) -C $(sub) $@
endif
然后:make sub=dir1 foo; make sub=dir2 bar biz baz
等。 (我认为根makefile文件本身不包含任何foo / bar / biz / baz;如果不是,则必须适当地修补这些规则。)