2010-12-01 28 views
2

Supposons que j'ai un Makefile:dépendances dans Makefile

all: $(BINARY) 

$(BINARY): $(OBJS) $(DEBUG_OBJS) 
    #Link objects here 

$(OBJS): headers 
    #Compile code into objects without debug option 

$(DEBUG_OBJS): headers 
    #Compile code into objects with debug option 

headers: 
    #Create on-the-fly header files 

Comme vous pouvez le voir, la cible headers est nécessaire à la fois par $(OBJS) et $(DEBUG_OBJS). La question est, sera headers être appelé deux fois? En outre, le code ci-dessous serait égal/équivalent à ce qui précède:

all: $(BINARY) 

$(BINARY): headers $(OBJS) $(DEBUG_OBJS) 
    #Link objects here 

$(OBJS): 
    #Compile code into objects without debug option 

$(DEBUG_OBJS): 
    #Compile code into objects with debug option 

headers: 
    #Create on-the-fly header files 

en ce que serait appelé avant en-têtes sont $(OBJS) et $(DEBUG_OBJS) par $(BINARY)?

Répondre

4

Non, headers sera effectué une seule fois.

Vous pouvez écrire un Makefile simple pour le tester:

all: foo bar 

foo: baz 

bar: baz 

baz: 
     echo 'hi' 

En faisant make, hi seront répétées une fois.

Et dans votre 2ème cas faire voir que $(BINARY) dépend d'abord headers, donc il va et fait headers avant d'autres dépendances.

+0

Merci beaucoup! – Sagar