从Shell脚本调用makefile

我是shell脚本的新手。 我想以特定的顺序从Shell脚本中调用make文件的列表。 对于每个makefile我想得到结果(make是成功还是失败)。 如果有任何错误,我想停止脚本执行。 如果成功,我必须运行下一个生成文件。

一个常见的习惯用法是用set -e创建一个shell脚本; 这将导致脚本退出第一个错误。

 #!/bin/sh set -e make -f Makefile1 make -f Makefile2 : 

如果您需要对整个脚本进行更多的控制,可以删除set -e ,而是在失败时显式地退出:

 make -f Makefile1 || exit make -f Makefile2 || exit 

为了减少代码重复,创建一个循环:

 for f in Makefile1 Makefile2; do make -f "$f" || exit done 

只是要明确, || “或”和&& “和”连接词是速记

 if make -f Makefile1; then : "and" part else : "or" part fi 

最后,你描述的行为听起来完全像Make本身的行为。 也许顶级的Makefile实际上是一个适合你的场景的解决方案?

 .PHONY: all all: $(MAKE) -f Makefile1 $(MAKE) -f Makefile2 
 make -f makefile1 make -f makefile2 

按顺序运行make文件

保存每个makefile的输出

 make -f makefile1 >> output1 make -f makefile2 >> output2 

在每个make文件之后检查结果

 make -f makefile1 >> output1 

在这行脚本之后使用
echo $? 这与if结合。 如果echo $? 结果零然后你的成功,所以如果echo $? 结果零然后运行下一个文件其他明智的出口