对 makefile 中 .DELETE_ON_ERRORS 的学习体会

上例子

SHELL=bash
.DELETE_ON_ERRORS: 

LIBS=foo.gao
all: $(LIBS)
    @echo final
foo.gao:
    @echo $@
    touch $@
    ./me.o

其中,me.o 程序是由C语言编译而成。其内容是显示 helloworld ,然后 return 2(即非正常退出)。 

运行结果要看如何来运行:

make --dry-run的运行结果:

 echo  foo.gao

 touch  foo.gao

 ./me.o

 echo final

此时 ls 命令可以发现,在当前目录下,并没有 foo.gao 文件。

而如果是仅仅运行 make,结果则是这样的:

echo foo.gao

touch foo.gao

./me.o

hello

make: *** [foo.gao] Error 2

此时 ls 命令可以发现,在当前目录下,生成了 foo.gao 文件,并没有被删除。

结束

原文地址:https://www.cnblogs.com/gaojian/p/2700066.html