0

假设,我有 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,而不对整个目标进行反向引用?一样$*

4

1 回答 1

0

使用模式规则:

all: $(patsubst ./data/%.pl,./pictures/%_data.tex,$(wildcard ./data/*.pl))

./pictures/%_data.tex : ./data/%.pl
        perl given.pl $* > $@
于 2013-04-27T21:35:59.767 回答