Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 什么';s生成文件的名称';匹配';特殊变量?_Variables_Makefile_Pattern Matching - Fatal编程技术网

Variables 什么';s生成文件的名称';匹配';特殊变量?

Variables 什么';s生成文件的名称';匹配';特殊变量?,variables,makefile,pattern-matching,Variables,Makefile,Pattern Matching,要在规则体中使用的特殊Makefile变量的名称是什么,该变量包含%的匹配项 作为一个例子,我想这样使用它: %.o: %.c @echo Matched $MATCH $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ %.o:%.c @回声匹配$MATCH $(CC)-c$(CFLAGS)$(CPPFLAGS)$

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

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

%.o: %.c
             @echo Matched $MATCH
             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
%.o:%.c
@回声匹配$MATCH
$(CC)-c$(CFLAGS)$(CPPFLAGS)$<-o$@
我把
$MATCH
放在那里,因为我记不起特殊模式匹配变量的实际名称

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


我没有找到它,但我知道它存在,因为我以前使用过它…

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

%.o: %.c
    @echo Matched `basename $@ .o`
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
%.o:%.c
@回显匹配的'basename$@.o`
$(CC)-c$(CFLAGS)$(CPPFLAGS)$<-o$@
从中,您所指的特殊变量是
$*
,隐式茎匹配:

隐式规则与之匹配的词干(请参见模式如何匹配)。 如果目标是
dir/a.foo.b
,目标模式是
a.%.b
,则茎是
dir/foo
。 stem对于构建相关文件的名称非常有用