我想使用此处上演的自动依赖管理技巧制作 *.[cpp,h] 文件的平面布局:http: //locklessinc.com/articles/makefile_tricks/
我的工作是:
.PHONY:全部干净 CXX ?= g++ 调试?=“1” ifeq ($(DEBUG), "1") CFLAGS+=-g 万一 BODIES := ExecuteStart GraphNode IdNodeMap IdValuePairCollection IScenarioReader XMLScenarioReader INodeExecute SRCS := $(添加后缀 .cpp, $(BODIES)) 对象 := $(addsuffix .o, $(BODIES)) DEPS := $(添加后缀 .d, $(SRCS)) 无依赖 = %.o %.a %.d %.h 展开 = $($(var)) $(var) $(var).d 依赖测试 = $(如果 $(过滤器 $(dependless),$(var)),$(var),$(expand)) 依赖 = $(排序 $(foreach var,$(1),$(depend_test))) 默认:全部 包括 $(通配符 *.d) & = $(过滤掉 %.h %.d,$^) 全部:$(对象) %.cpp.d: %.cpp @echo 为 $ $@' 创建 $@' 干净的: rm $(对象) $(DEPS)
问题是规则 %.o: $(call depend, %.cpp) 不起作用,因此如果我制作 --warn-undefined-variables 它会警告 %.cpp。结果是 make 弄清楚如何生成 *.o 文件并且不使用我的规则。
我有跳过的问题吗?