首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Shell脚本调用makefile

从Shell脚本调用makefile
EN

Stack Overflow用户
提问于 2013-06-14 14:26:41
回答 2查看 18.8K关注 0票数 8

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-14 15:00:29

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

代码语言:javascript
复制
#!/bin/sh
set -e
make -f Makefile1
make -f Makefile2
:

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

代码语言:javascript
复制
make -f Makefile1 || exit
make -f Makefile2 || exit

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

代码语言:javascript
复制
for f in Makefile1 Makefile2; do
    make -f "$f" || exit
done

为了明确起见,||中的"or“和”&&“和”“连接词是

代码语言:javascript
复制
if make -f Makefile1; then
     : "and" part
else
    : "or" part
fi

最后,您所描述的行为听起来与Make本身的行为完全相同。也许顶级Makefile实际上是适合您的场景的解决方案?

代码语言:javascript
复制
.PHONY: all
all:
    $(MAKE) -f Makefile1
    $(MAKE) -f Makefile2
票数 12
EN

Stack Overflow用户

发布于 2013-06-14 14:50:30

代码语言:javascript
复制
make -f makefile1
make -f makefile2

按顺序运行make files

保存每个makefile的输出

代码语言:javascript
复制
make -f makefile1 >> output1
make -f makefile2 >> output2

检查每个make文件后的结果

代码语言:javascript
复制
make -f makefile1 >> output1

在此行脚本之后使用

代码语言:javascript
复制
 echo $?  this in combination with if. if echo$? result zero then your make success so if echo$? result zero then run next file other wise exit
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17102354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档