不是很理解为什么包括了.d文件进Makefile后,就可以检测到.h的修改从而重新编译

看了 第009课_gcc和arm-linux-gcc和Makefile 好几遍依然无法理解,在include了依赖文件进来之后,为什么就可以检测到.h的修改了。具体疑问如下

第一种写法:

c.o : c.c c.h

在第一种写法中,表明了c.o 依赖于c.h,所以c.h有更新了, 他就会重新编译c.c,这个很好理解。

第二种写法

include $(dep_files)

%.o : %.c

gcc $(CFLAGS) -c -o $@ $< -MD -MF .$@.d

在第二种写法中,只是include了.d文件,提供了所依赖的.h是哪些,那.c依然没有更新呀,既然没有更新那他怎么会去再次执行下面的编译命令呢?

求解释。

请先 登录 后评论

1 个回答

不知道起啥子名字

看一下这个你就懂了https://blog.csdn.net/qq1452008/article/details/50855810

请先 登录 后评论