如果编译一个依赖项失败,如何强制make退出?

时间:2010-01-28 14:15:10

标签: gcc makefile gnu-make

我发布了makefile的相关内容。当我在这个makefile上运行make all时,编译debugosd.o时会出现编译错误。但是,因为make找到了之前构建的debugosd.o,所以它只是继续构建dialup.otz

如果不删除所有的.o,我怎么能强制debugosd.o变得过时 - 所以强制make在遇到{{1}中的编译错误时立即停止}?

构建.o文件的规则是:

debugosd.o

makefile片段是:

%.o: %.c
    $(TITLE)
    $(CC) $(COMPILE) $(C_OPTIONS) -c $<

实际上,我弄清楚问题是什么。我正在使用虚假目标强制重建all: shared0.flw shared1.flw shared2.flw shared3.flw debugosd.o: debugosd.c debugosd.h xdialler_interface_new.o: xdialler_interface.h dialup.ooo: xdialler_interface_new.o debugosd.o xDialler.a $(TITLE) $(MAKE_OOO) dialup.otz: dialup.ooo $(BIN)opress $< shared1.dir: dialup.otz $(TITLE) $(BIN)dirbuild $(SHAREDDIR1_OPTIONS) shared1.flw: shared1.dir $(TITLE) $(BIN)flwbuild $(SHAREDFLW_OPTIONS1) 。我认为这会迫使shared1.flw继续而不管错误。

1 个答案:

答案 0 :(得分:1)

您没有列出debugosd.o的特定子命令,因此我假设它使用默认值,某处(例如.c.o)。

如果任何子命令返回非零退出代码,则应该退出,除非该命令以- 开头。检查用于dubugosd.o目标的实际命令。

是否存在以前构建的文件无关紧要,make不应在错误情况后继续进行。