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

发布于 2024-09-29 09:33:56 字数 482 浏览 1 评论 0原文

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

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

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

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

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

我没有在这里找到它,但我找到了存在是因为我以前用过它......

What is the name of the special Makefile variable that contains the match of %, to use in the rule body?

As an example, I would like to use it like this:

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

where I put $MATCH there because I can't remember the actual name of that special pattern-match variable.

In other words, if the user says make foo.c I want to output Matched foo.

I didn't find it here, but I it exists because I've used it before ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丑疤怪 2024-10-06 09:33:56

GNU Make 软件手册中,您可以使用特殊变量指的是$*,隐式词干匹配:

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

From the GNU Make software manual, the special variable you are referring to is $*, the implicit stem match:

The stem with which an implicit rule matches (see How Patterns Match).
If the target is dir/a.foo.b and the target pattern is a.%.b then the stem is dir/foo.
The stem is useful for constructing names of related files.

鹊巢 2024-10-06 09:33:56

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

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

I don't see a specific variable, but here is a solution for you:

%.o: %.c
    @echo Matched `basename $@ .o`
    $(CC) -c $(CFLAGS) $(CPPFLAGS) 
lt; -o $@
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文