如何在makefile中引用perl $符号

时间:2012-12-03 20:30:47

标签: perl makefile quoting

在Makefile中,我有一个规则,通过管道来制作LaTeX纸张的图表 从脚本输出到perl表达式,增加图形数字$ f ++并将图$ f:添加到行。

从命令行,它可以正常工作,如下所示:

% texdepend -format=1 -print=f MilestonesProject | perl -pe 'unless (/^#/){$f++; s/^/Figure $f: /}' > FIGLIST

生成FIGLIST:

# texdepend, v0.96 (Michael Friendly (friendly@yorku.ca))
# commandline: texdepend -format=1 -print=f MilestonesProject
# FIGS =
Figure 1: fig/langren-google-overlay2.pdf
Figure 2: fig/mileyears4.png
Figure 3: fig/datavis-schema-3.pdf
Figure 4: fig/datavis-timeline2.png
...

我无法弄清楚如何在Makefile中使这个工作,因为perl表达式中的$ f东西被make解释,我无法弄清楚如何引用它或其他方式 让它看不见。

我最近在Makefile中的尝试:

## Generate FIGLIST; doesnt work due to Make quoting
FIGLIST:
    $(TEXDEPEND) -format=1 -print=f $(MAIN)  | perl -pe 'unless (/^#/){\$f++; s/^/Figure \$f: /}' > FIGLIST

有人可以帮忙吗?

- 迈克尔

1 个答案:

答案 0 :(得分:4)

美元符号加倍。

## Generate FIGLIST
FIGLIST:
    $(TEXDEPEND) -format=1 -print=f $(MAIN) \
    | perl -pe 'unless (/^\#/){$$f++; s/^/Figure $$f: /}' > $@

您可能还需要反斜杠 - 转义注释符号。我这样做是为了以防万一。

另见http://www.gnu.org/software/make/manual/html_node/Variables-in-Recipes.html#Variables-in-Recipes