假设我有2个文件,彼此依赖:
./pictures/1_data.tex
|
V
./data/1.pl
因此,1_data.tex是从Perl文件生成的。为此,我在makefile中有以下规则:
./pictures/1_data.tex: ./data/1.pl
perl given.pl 1 > $@
如果我有多个具有此模式的文件:
./data/1.pl
./data/2.pl
...
./data/n.pl
我想使用通配符来处理它们。我试过这个:
./pictures/*_data.tex: ./data/*.pl
perl given.pl $* > $@
但它会生成错误的命令:
perl given.pl pictures/1_data > pictures/1_data.tex
是否可以仅对1
进行反向引用,而不是对整个目标进行反向引用?正如$*
所做的那样。
答案 0 :(得分:0)
使用模式规则:
all: $(patsubst ./data/%.pl,./pictures/%_data.tex,$(wildcard ./data/*.pl))
./pictures/%_data.tex : ./data/%.pl
perl given.pl $* > $@