> Now g++ can already generate a dependency graph of headers for an executable.
Actually, it cannot; and this should be well known. It emits in practice less than half of the information that it knows from path lookup, that a build system really needs to know.