2012-06-18 4 views
0

Je veux faire un plat d'* [cpp, h] fichiers en utilisant l'astuce de gestion automatique des dépendances mis en scène ici: http://locklessinc.com/articles/makefile_tricks/Makefile Génération automatique de dépendance (% de .o)

Mon travail est:

 

.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) 

Le problème est que la règle% .o: $ (appel dépend,% .cpp) ne fonctionne pas et donc si je crée --warn-undefined-variables il met en garde sur% .cpp. Le résultat étant des chiffres sur la façon de produire des fichiers * .o et n'utilise pas ma règle.

Est-ce que j'ai un problème ignoré?

Répondre

1

Je trouve la miss horrible dans les règles:

 
all: $(DEPS) $(OBJECTS) 

qui ont fixé la question. Mais il faut ajouter une règle explicite de «dépendance de génération» à tous.

Questions connexes