0

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

我想make从我中断的地方继续这个过程。问题似乎是有一半完成/写入.o的文件漂浮在周围,导致其余的构建中断(当我指定时这尤其糟糕-j 8

有没有一种简单的方法来解决这个问题(不做make cleanmake distclean类似的事情)?

使用 GNU Make 3.81

4

1 回答 1

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,那么您可以在一些隐式规则中的几个地方进行这些更改,如上所述。

于 2013-03-11T12:21:10.067 回答