makefile问题咨询,急!

duanzhh 2010-07-27 11:10:21

大家好,本人在做项目时遇到一个MAKEFILE问题,简单介绍下:现在的项目由多个模块组成,各子模块都有单独一个

makefile,而整个项目也有一个makefile,这个makefile是调用各子模块进行编译的,最后再进行一个MAIN 的综合编译,

我现在的问题就是当执行整个项目的MAKEFILE时,若某个子模块编译失败,在这一步他不会停下来,会继续进行下一模块的编

译,这明显有问题。

我当前的解决办法是每编译一个子模块,判断它的make执行结果,若返回0,就成功并继续。若返回1,就失败跳出编译。

但项目负责人说这样不好,MAKE有比较简单的办法来实现这种处理,但我确不知道具体怎么做,望各位大侠给个思路!谢谢
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanzhh 2010-07-29
  • 打赏
  • 举报
回复
好,学习下二楼的,谢啦!
a341869094 2010-07-28
  • 打赏
  • 举报
回复
我支持2楼 mark下
ypb362148418 2010-07-28
  • 打赏
  • 举报
回复
试试二楼的方法吧,在每个模块的的Makefile中做判读就行了,主文件应该是不让停的
lazy_2010 2010-07-28
  • 打赏
  • 举报
回复
楼主是想通过修改 make 的选项;

楼主是在什么 linux 系统下?

我在 ubuntu 下,直接 make 遇到问题就停止了的。也是多个 Makefile 合并的情况。
mymtom 2010-07-28
  • 打赏
  • 举报
回复
为什么不试试二楼的方法呢?
难道没有看到星星?
make -S ≡ make
-S
Terminates the make command if an error occurs. This is the default and the opposite of -k flag.
duanzhh 2010-07-28
  • 打赏
  • 举报
回复
make -S 怎么实现这种处理?下面是我做的测试,若client模块编译失败了,还会继续进行service模块的

编译,这样不对啊,理论上是应该可以在client编译失败后就停止的。这种该怎么处理啊?谢谢
cd ./src
cd ./client
echo $COMM_PATH
echo ----------------------------- client----------------------------
rm *.o
make -S
cd ..
cd ./service
echo ----------------------------- service----------------------------
rm *.o
make -S
cd ..
cd ./ljzl
echo ----------------------------- ljzl---------------------------
rm *.o
make
cd ..
mymtom 2010-07-27
  • 打赏
  • 举报
回复

SUBDIRS = p1 p2

world: all

all clean:
@CURDIR=`pwd`; \
for DIR in $(SUBDIRS); do \
cd $${CURDIR}; \
echo "===> $${DIR} $@"; \
cd $${DIR} && make $@; \
if [ $$? -ne 0 ]; then break; fi; \
done
lazy_2010 2010-07-27
  • 打赏
  • 举报
回复
make -S

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧