Knowing when and why targets are rebuilt and recipes run is fundamental to using GNU
make. For simple makefiles, it’s easy to understand why a particular object file was built, but for real-world makefiles, building and rebuilding becomes complex. In addition, GNU
make dependencies can be limiting because files are updated when the modification time of a prerequisite is later than the target. And in most cases, only a single target is updated by a single rule.
This chapter explains advanced techniques for handling dependencies in GNU
make, including rebuilding when the recipe of a target changes, rebuilding when a checksum of a file changes, how best to implement recursive
make, and how to build multiple targets ...