我想使用此处暂存的自动依赖关系管理技巧制作*。[cpp,h]文件的平面布局:http://locklessinc.com/articles/makefile_tricks/
我的工作是:
.PHONY: all clean CXX ?= g++ DEBUG ?= "1" ifeq ($(DEBUG), "1") CFLAGS+=-g endif BODIES := ExecuteStart GraphNode IdNodeMap IdValuePairCollection IScenarioReader XMLScenarioReader INodeExecute SRCS := $(addsuffix .cpp, $(BODIES)) OBJECTS := $(addsuffix .o, $(BODIES)) DEPS := $(addsuffix .d, $(SRCS)) dependless = %.o %.a %.d %.h expand = $($(var)) $(var) $(var).d depend_test = $(if $(filter $(dependless),$(var)),$(var),$(expand)) depend = $(sort $(foreach var,$(1),$(depend_test))) default: all include $(wildcard *.d) & = $(filter-out %.h %.d,$^) all: $(OBJECTS) %.cpp.d: %.cpp @echo creating $@ for $ $@' clean: rm $(OBJECTS) $(DEPS)
问题是规则%.o:$(调用依赖,%.cpp)不起作用,因此如果我使用--warn-undefined-variables它会警告%.cpp。结果是如何生成* .o文件并且不使用我的规则。
我是否有跳过的问题?
答案 0 :(得分:1)
我在规则中发现了可怕的错过:
all: $(DEPS) $(OBJECTS)
解决了这个问题。但它需要向所有人添加明确的“生成依赖”规则。