当我编译大型程序(例如gcc或clang)时,我的计算机可能会过热,并被迫关闭。
我想从我离开的地方恢复make
进程。问题似乎是有一半已完成/写入的.o
文件浮动,导致构建的其余部分中断(当我指定-j 8
时这尤其糟糕)
有没有一种简单的方法可以解决这个问题(无需执行make clean
或make distclean
等)?
使用GNU Make 3.81
答案 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,那么你可以在几个隐含规则中的几个地方进行这些更改,如上所述。