当前位置: 技术问答>linux和unix
makefile问题,高手进
来源: 互联网 发布时间:2016-07-19
本文导语: 我要编译多个子目录下的多个工程,make规则如下: all: @for a in $(app_dir_list); do $(MAKE) -C $(APPDIR)/$$a; done 问题是:如果其中一个工程编译错误 ,并不会停止执行make,而是继续编译后面的工程,直到所有的工程都...
我要编译多个子目录下的多个工程,make规则如下:
all:
@for a in $(app_dir_list); do $(MAKE) -C $(APPDIR)/$$a; done
问题是:如果其中一个工程编译错误 ,并不会停止执行make,而是继续编译后面的工程,直到所有的工程都编译完成,最终提示错误数却为0.
请问如果让任何一个工程编译错误时,就立即停止make?
all:
@for a in $(app_dir_list); do $(MAKE) -C $(APPDIR)/$$a; done
问题是:如果其中一个工程编译错误 ,并不会停止执行make,而是继续编译后面的工程,直到所有的工程都编译完成,最终提示错误数却为0.
请问如果让任何一个工程编译错误时,就立即停止make?
|
$(MAKE) -C $(APPDIR); if [ ! $? -eq 0]; then echo "error"; exit 1; fi;
|
嗯,这个判断返回都是0,应该要换个方式来做。不能用make -C 了,直接的想法是先cd $(APPDIR);再make,然后再判断 $? 是否为0
|
|
注意, if [ ! $? -eq 0 ] [ 和 ] 前后都要有空格,这是shell的规定。
另外, $(MAKE) -C $(APPDIR);这行命令应该是tab键打头,这是makefile的规定。
另外, $(MAKE) -C $(APPDIR);这行命令应该是tab键打头,这是makefile的规定。