It works for me, although I'm a hobby programmer and almost exclusively
work on small projects with just a handful of source files. I can see
how this may not be feasible for larger projects, because of the
recursive nature, but I like how this doesn't require any extra tools
besides the compiler and make.
I'm not sure if this is particular to GNU make or works this way with
any POSIX make, but it tries to remake any makefiles that are out of
date or don't exist, and then restarts. This includes files included by
the include directive, like dependency files.
Depending on the order it tries, initially it may fail creating
dependency files for all source files that depend on a module file from
another source file, but it will work for at least one module (at the
root of the dependency tree). As long as one dependency file is remade,
make will restart and in the next run try to create the remaining
dependency files, and so on. This recursive behaviour causes all module
files to be created in the end.
Erik.