2010-04-29 5 views
4

nous espérons que cela est une question fondamentale à propos de rendre les règles du modèle: Je veux utiliser un caractère générique plus d'une fois dans une condition sine qua non d'une règle, à savoir dans mon Makefile j'airègles de motif makefile: simple joker, plusieurs instances en condition

data/%P1.m: $(PROJHOME)/data/%/ISCAN/%P1.RAW 
     @echo " Writing temporary matlab file for $*" 
     # do something 

data/%P2.m: $(PROJHOME)/data/%/ISCAN/AGP2.RAW 
      @echo " Writing temporary matlab file for $*" 
      # do something 

Dans cet exemple, j'essaie d'invoquer make lorsque le caractère générique% est AG. Les deux fichiers $ (PROJHOME) /data/AG/ISCAN/AGP1.RAW et $ (PROJHOME) /data/AG/ISCAN/AGP2.RAW existent. Je tenterai les éléments suivants font des commandes et obtenir cette sortie:

[[email protected] gender-diffs]$ make data/AGP1.m 
make: *** No rule to make target `data/AGP1.m'. Stop. 

[[email protected] gender-diffs]$ make data/AGP2.m 
Writing temporary matlab file for AG, part 2... 

[[email protected] gender-diffs]$ ls data/AG/ISCAN/AG* 
data/AG/ISCAN/AGP1.RAW data/AG/ISCAN/AGP2.RAW 

Comment puis-je mettre en œuvre plusieurs instances du même caractère générique dans la première règle de faire?

Répondre

4

cela semble fonctionner:

.SECONDEXPANSION:  
data/%P1.m: $(PROJHOME)/data/$$*/ISCAN/$$*P1.RAW 
      @echo "Writing temporary matlab file for $*, part 1..." 
Questions connexes