2012-06-18 33 views
0

我想要的平面佈局* [CPP,H]使用自動依賴管理訣竅文件在這裏上演:http://locklessinc.com/articles/makefile_tricks/Makefile文件自動依存產生(%的.o)

我的工作是:

 

.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 [email protected] for $ [email protected]' 

clean: 
    rm $(OBJECTS) $(DEPS) 

問題是規則%.o:$(調用depend,%.cpp)不起作用,因此如果我使用--warn-undefined變量,它會警告%.cpp。結果正在計算出如何生成* .o文件並且不使用我的規則。

我有跳過的問題嗎?

回答

1

我發現,在規則的恐怖小姐:

 
all: $(DEPS) $(OBJECTS) 

這固定的問題。但它需要明確的「生成依賴」規則添加到所有。