Why the result of g++ option -MM -MF afile is not the same as -MM > afile if inside makefile with VPATH defined somehing? The first is defected i.e. incorrect and incomplete as opened/printed out by cat afile, but so confusing is how come the process is not affected at all i.e. it finish the job perfectly the same ? Please help explain this behavour !