用cc-MM替换makedepend

用cc-MM替换makedepend,c,gcc,makefile,C,Gcc,Makefile,我目前使用makedepend,但在使用它和一个库时遇到了一些问题,我决定还是切换到cc-MM。我当前的makefile是仿照的 我将如何着手进行改变 当前生成文件 请在上查看本页的最后一节 如果编译器支持-MMD选项(与gcc一样),则只需在编译器标志中包含-MMD(生成依赖项)和-MP(为.d文件中的每个prereq生成虚假目标),并在生成文件的末尾添加以下内容: # Use the dependency files created by the -MMD option to gcc. -

我目前使用makedepend,但在使用它和一个库时遇到了一些问题,我决定还是切换到
cc-MM
。我当前的makefile是仿照的

我将如何着手进行改变


当前生成文件
请在上查看本页的最后一节

如果编译器支持-MMD选项(与gcc一样),则只需在编译器标志中包含-MMD(生成依赖项)和-MP(为.d文件中的每个prereq生成虚假目标),并在生成文件的末尾添加以下内容:

# Use the dependency files created by the -MMD option to gcc.
-include $(SRCS:.c=.d)  

我已经在Cygwin/gcc中使用了一段时间,并对结果感到满意。

这将是一个棘手的问题
cc-M
生成一个依赖项列表作为标准输出(可以重定向到文件中),而默认情况下makedepend实际上将其插入makefile中。也许你可以发布一个小的makefile,我们可以告诉你如何更改它。@Beta:我已经更新了这个问题,谢谢!对于
.PHONY
目标,您可能正在使用GNU Make,但明确说明这些问题并不是坏事。还有其他版本的
make
。如果提问者可能使用GNU make(因为
.PHONY
目标),那么使用
-include
的解决方案也应该可以。也就是说,AFAIK,一个GNU制造的特性,虽然没有标准化。依赖项的生成应该去哪里?我知道它应该在
%.o:%.c[pp]
-规则中的某个地方,但是复制粘贴配方会很受欢迎。顺便说一句,这里有一个(主观上)更简单的关于“自动依赖性”的描述:@TomaszGandor,我很确定我的答案中引用的行可以放在Makefile中的任何地方。在我的例子中,我将它们放在
%.o:%.c[pp]
-规则之前,但它实际上不是规则的一部分。
# Use the dependency files created by the -MMD option to gcc.
-include $(SRCS:.c=.d)