Makefile'匹配'特殊变量的名称是什么?

时间:2010-10-25 01:29:22

标签: variables makefile pattern-matching

在规则体中使用的包含%匹配项的特殊Makefile变量的名称是什么?

作为一个例子,我想像这样使用它:

%.o: %.c
             @echo Matched $MATCH
             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

我把$MATCH放在那里因为我不记得那个特殊模式匹配变量的实际名称。

换句话说,如果用户说make foo.c我想输出Matched foo

我没有找到here,但我存在是因为我之前使用过它...

2 个答案:

答案 0 :(得分:2)

GNU Make software manual开始,您引用的特殊变量是$*,隐式词干匹配:

  

隐式规则匹配的词干(请参阅模式匹配)。   如果目标为dir/a.foo.b且目标模式为a.%.b,则词干为dir/foo。   词干对于构造相关文件的名称非常有用。

答案 1 :(得分:0)

我没有看到特定的变量,但这里有一个解决方案:

%.o: %.c
    @echo Matched `basename $@ .o`
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@