翻译自GCC的帮助文档:
-M 不是输出预编译过程的结果,而是输出一个用于make的规则,该规则描述了这个main源文件的依赖关系。预编译器输出的这个make规则包含名字与原文件相同的目标文件,冒号和所有include文件的名字。这些include文件主要来自于-include或-imacros命令行选项。
除非明确的指定-MT或-MQ,否则目标文件名由两部分组成:源文件名加目标文件后缀和可以被删除的目标文件路径。如果有多个include的文件,该规则将使用\-newline将其分成几行。该规则并没用命令。