当一个文件包含的头文件变得很多,源文件也变得很多的时候。 我们要是手动在makefile中加入依存条件,就变得复杂,而且容易出错了。
现在有个办法可以自动生成依存条件。
include ywtest.d
%.d: %.c
gcc -MM $(CPPFLAGS) $< > $@.$$$$ ; /
sed 's,/($*/)/.o[ :]*,/1.o $@ : ,g' < $@.$$$$ > $@; /
rm -f $@.$$$$
gcc -MM表示只显示包含的非系统头文件。 然后通过sed输出合适的格式。
实际项目中 include 可以改写成
SOURSES = *.c
include $(subst .c,.d,$(SOURCES))