我想使用此处上演的自动依赖管理技巧制作 *.[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 文件并且不使用我的规则。
我有跳过的问题吗?