的makefile模式规则:单通配符,前提
问题描述:
希望这是有关生成模式规则的一个基本问题的多个实例: 我想使用通配符不止一次在一个前提的规则,即在我的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
我如何能实现在第一生成规则相同通配符的多个实例?
答
这似乎工作:
.SECONDEXPANSION:
data/%P1.m: $(PROJHOME)/data/$$*/ISCAN/$$*P1.RAW
@echo "Writing temporary matlab file for $*, part 1..."