Thanks Paul,
I have been following your article https://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ and put ` CPPFLAGS += -MMD ` in my makefile. And this works. I have been so confused for years everytime when I read the example in manual section 4.14 `Generating Prerequisites Automatically`. So, The rule in 4.14 tries to keep the `.d` files. When a `.d` file is deleted eg. from command line, the rule will regenerate it. Am i understanding it correctly? Also the 4.14 example works with the first two style of the include in makefile. Why the last two do not work? -include $(patsubst %.cpp,%.d,$(wildcard *.cpp)) # ok -include $(sources:.c=.d) # ok -include $(wildcard *.d) # error -include *.d # error Thanks