Variables 什么';s生成文件的名称';匹配';特殊变量?
要在规则体中使用的特殊Makefile变量的名称是什么,该变量包含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)$
%
的匹配项
作为一个例子,我想这样使用它:
%.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对于构建相关文件的名称非常有用