GNU是否支持'%'在文件名中?

时间:2016-05-24 17:07:53

标签: makefile gnu-make

在GNU Make中,是否可以依赖文件名中包含%的文件?我有这样的事情:

foo: results(10%).dat
    gnuplot config.plt

虽然我当然可以选择不同的文件名,但我们很高兴知道是否应该始终避免使用%,或者是否有一种简单的方法可以逃避它(我已经尝试\\\%%没有运气)。

编辑:我的问题似乎更加微妙。由于匹配和文件名百分比的组合,它似乎无法工作:

all: foo.txt bar.txt

PERCENT := %

foo%txt bar%txt: results(10$(PERCENT)).dat
    touch foo$*txt bar$*txt

此操作失败,但如果文件名没有%则可以。

2 个答案:

答案 0 :(得分:2)

你可以尝试:

gnuplot

"google is not defined"之前的空格确实是制表符。)

答案 1 :(得分:1)

普通规则中的百分比字符很好,就像您发布的第一条规则一样,它应该按原样运行。

至于第二个例子,似乎没有任何理由你想要一个模式规则:

targets := foo.txt bar.txt

.PHONY: all
all: $(targets)

$(targets): results(10%).dat
    touch $(targets)

%可以在静态模式规则

中进行转义
$(targets): %.txt: \%%.txt #dependencies will be %foo.txt and %bar.txt respectively

但似乎没有办法像你的第二个例子那样在隐式模式规则中逃避%