从突然结束的make中恢复

时间:2013-03-10 19:49:53

标签: makefile resume

当我编译大型程序(例如gcc或clang)时,我的计算机可能会过热,并被迫关闭。

我想从我离开的地方恢复make进程。问题似乎是有一半已完成/写入的.o文件浮动,导致构建的其余部分中断(当我指定-j 8时这尤其糟糕)

有没有一种简单的方法可以解决这个问题(无需执行make cleanmake distclean等)?

使用GNU Make 3.81

1 个答案:

答案 0 :(得分:1)

与Beta的评论相同,但更可靠,更不容易混淆的IMO,将改变您的编译规则,以便您编译为临时文件,然后在最后将其重命名为真实文件。所以你可能会有这样的地方:

%.o : %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<

相反,你会使用类似的东西:

%.o : %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -o $@.tmp -c $< \
            && mv -f $@.tmp $@

您可能也可能不想添加“rm -f $ @”。

至于您是否可以“以编程方式”进行此更改,它都依赖于您的makefile以及它的结构。如果它是一个结构良好的makefile,那么你可以在几个隐含规则中的几个地方进行这些更改,如上所述。