Those arguments are not enough. For dependencies to be fully reliable, the compiler needs to emit information about where headers were not found, in addition to where they were found. Otherwise headers introduced earlier into search paths after a build do not properly trigger a rebuild.
* http://jdebp.eu./FGA/introduction-to-redo.html#CompilerDefic...
* http://cr.yp.to/redo/honest-nonfile.html