从Shell脚本调用makefile

时间:2013-06-14 06:26:41

标签: linux shell makefile

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

2 个答案:

答案 0 :(得分:8)

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

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

如果您需要对整个脚本进行更多控制,可以删除set -e,然后明确退出make失败:

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

答案 1 :(得分:2)

make -f makefile1
make -f makefile2

按顺序运行make文件

保存每个makefile的输出

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

检查每个make文件后的结果

make -f makefile1 >> output1

此行脚本后使用
    回声$?这与if结合使用。如果回音$?结果为零然后你的成功所以如果echo $?结果为零然后运行下一个文件其他明智的退出