分享:使用纯GNU make和echo自动生成依赖项
网上的自动生成依赖项基本都基于sed工具,感觉很不方便,仔细看了GNU make的文档,发现可以通过make的函数和echo生成。语句如下:
$(OBJ_DIR)/%.d: %.c
@echo $(strip $(@:.d=.o)) $(join $(OBJ_DIR)/, $(subst $(<:.c=.o),$@, $(shell $(CC) -MM $(CFLAGS) $<))) >$@
$(OBJ_DIR)是在all之前自动创建的,第一次运行时会提示找不到文件,不过不影响,以后就正常了。
对不起,后来发现如果头文件过多,gcc -MM会分行,导致结果错误。
所以还是用sed工具吧,好在sed也支持windows了。
[此贴子已经被作者于2016-1-7 10:53编辑过]