What kind of retard decided that this is a sensible behavior
I'm using Make to implement a workflow, and here I use a bunch of files to indicate that certain tasks have completed. They are not the results of the tasks, I just touch files to indicate that the given task is completed since that is the simplest way to tag that.
There is a bit of chaining going on, so a makefile like this is pretty representative:
all: foo.c .PHONY: all %.a: touch $@ %.b: %.a touch $@ %.c: %.b touch $@
Now, if I run this, this happens:
$ make touch foo.a touch foo.b touch foo.c rm foo.b foo.a
Why does it delete foo.a and foo.b? I didn't ask it to, and I certainly don't want it to. Tasks a and b are completed, and I don't want to redo them later unless I explicitly ask for it, so why does Make delete the fact that the tasks are done?
It doesn't delete the last file, foo.c, so it is not completely useless, just 99% useless...