以下两种方式之间的区别是自动生成依赖关系

时间:2016-04-27 06:55:46

标签: makefile gnu-make

我正在阅读使用GNU Make管理项目,在第2章中,作者编写了以下方法来进行自动依赖关系生成

depend: count_words.c lexer.c counter.c
       $(CC) -M $(CPPFLAGS) $^ > $@

include depend

但是,我通常会这样做

makedepend -I $(CC) -f $(MAKEFILE) count_words.c lexer.c counter.c

我不确定哪种方式更好或者它们是否具有相同的用途并且可以互换使用?

非常感谢!

1 个答案:

答案 0 :(得分:2)

我无法想到两者之间的任何差异,虽然我认为第一个意味着你需要少一个工具来构建它,所以它稍微好一点。

也就是说,更好的方法是在编译时将-MMD -MP添加到预处理程序标志中,这会生成依赖文件作为编译本身的副作用。

SRCS := count_words.c lexer.c counter.c
OBJS := $(SRC:.c=.o)
DEPS := $(SRC:.c=.d)

CPPFLAGS := -MMD -MP

$(OBJS):

-include $(DEPS)