假设我有一个带有规则的makefile

%.o: %.c
 gcc -Wall -Iinclude ...

每当头文件更改时,我都希望重建* .o。每当/include中的任何头文件发生更改时,都不必重新构建依赖关系列表,而必须重建dir中的所有对象。

我想不出一种改变规则以适应这一要求的好方法,我愿意提出建议。如果不需要对标题列表进行硬编码,则可获得加分

最佳答案

如果您使用的是GNU编译器,则编译器可以为您汇编依赖项列表。 Makefile片段:

depend: .depend

.depend: $(SRCS)
        rm -f ./.depend
        $(CC) $(CFLAGS) -MM $^ -MF  ./.depend;

include .depend

要么
depend: .depend

.depend: $(SRCS)
        rm -f ./.depend
        $(CC) $(CFLAGS) -MM $^ > ./.depend;

include .depend

其中SRCS是指向您的整个源文件列表的变量。

还有makedepend工具,但是我从来没有像gcc -MM那样喜欢它。

10-07 15:34