Apology for not C++ topic but instead its nearby 'meta' process
Why g++ option -MM -MF afile is not the same as -MM > afile ?
The first is defected i.e. incorrect and incomplete, how come while its reference means the same
-MM Like ‘-M’ but do not mention header fi les that are found in system header directories, nor header fi les that are included, directly or indirectly, from such a header. This implies that the choice of angle brackets or double quotes in an ‘#include’ directive does not in itself determine whether that header appears in ‘-MM’ dependency output.
-MF file When used with ‘-M’ or ‘-MM’, specifies a file to write the dependencies to. If no ‘-MF’ switch is given the preprocessor sends the rules to the same place it would send preprocessed output. When used with the driver options ‘-MD’ or ‘-MMD’, ‘-MF’ overrides the default dependency output file.