2010-04-29 46 views
4

希望這是有關生成模式規則的一個基本問題的多個實例: 我想使用通配符不止一次在一個前提的規則,即在我的Makefile我有的makefile模式規則:單通配符,前提

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 

在這個例子中,當通配符%是AG時,我嘗試調用make。存在$(PROJHOME)/data/AG/ISCAN/AGP1.RAW和$(PROJHOME)/data/AG/ISCAN/AGP2.RAW兩個文件。我嘗試以下make命令並得到如下的輸出:

[[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 

我如何能實現在第一生成規則相同通配符的多個實例?

回答

4

這似乎工作:

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