2009-08-02 11 views
5

Ho la seguente GNU makefile:Eseguire nuovamente bersaglio quando specificato come dipendenza a più regole

.PHONY a b c d 

a: b c 
b: d 
c: d 
d: 
    echo HI 

Vorrei che la 'd' obiettivo da eseguire due volte - dal momento che è specificato come una dipendenza da entrambi b & c. Sfortunatamente, il bersaglio 'd' sarà eseguito solo una volta. L'output di make in esecuzione sarà semplicemente 'HI', invece di 'HI HI'.

Come posso risolvere questo?

Grazie!

Per chiarire, l'obiettivo è qualcosa di simile:

subdirs = a b c 

build: x y 

x: target=build 
x: $(subdirs) 

y: target=prepare 
y: $(subdirs) 

$(subdirs): 
    $(make) -f [email protected]/makefile $(target) 

risposta

1

Stai cercando di fare qualcosa di simile:

.PHONY: a b c 

define print-hi 
@echo HI 
endef 

a: b c 
b: 
    $(print-hi) 
c: 
    $(print-hi) 
+0

Non proprio. Più o meno così: subdirs = abc costruzione: xy x: target = costruire x: $ (sottodirectory) y: target = preparare z: $ (sottodirectory) $ (sottodirectory): $ (make) -f $ @/makefile $ (destinazione) –