Declaring source dependencies in makefiles
For example, object module hello.obj depends on source files hello.c and hello.h in the same directory:
hello.obj: hello.c hello.h
del hello.obj
hello.c
Typically, these source files depend on project-specific header files through #include directives, perhaps nested within one another. The standard files do not change very often, but changed header files can produce compilation failure.
To alleviate this problem, some organizations include every header file dependency in their makefiles. They rely on utility programs to read the source files and determine the dependencies.
omake and clearmake do not require that source-file dependencies be declared in makefiles (but see Source dependencies declared explicitly). The first time a derived object is built, its build script is always executed; thus, the dependency declarations are irrelevant for determining whether the target is out of date. After a derived object has been built, its configuration record provides a complete list of source-file dependencies used in the previous build, including those on all header files (nested and non-nested) read during the build.
You can leave source-file dependency declarations in your existing makefiles, but you need not update them as you revise the makefiles. And you need not place source-file dependencies in new makefiles to be used with omake or clearmake.