如何创建可以将目标扩展为依赖项的 make 模式规则?

发布于 2024-12-02 11:47:16 字数 376 浏览 1 评论 0原文

我正在尝试创建一个具有如下规则的 makefile:

~/$ cat > Makefile << EOF
FILES=a b c
$(FILES): % : src/%/%
        @echo "$@ $<"
EOF

运行命令给出:

~/$ make a
make: *** No rule to make target `src/a/%', needed by `a'.  Stop.

我想看到的是:

~/$ make a
a src/a/a

如何创建规则来扩展第二个 %

I'm trying to create a makefile that has rule something like:

~/$ cat > Makefile << EOF
FILES=a b c
$(FILES): % : src/%/%
        @echo "$@ 
lt;"
EOF

Running the command gives:

~/$ make a
make: *** No rule to make target `src/a/%', needed by `a'.  Stop.

And what I'd like to see is:

~/$ make a
a src/a/a

How do a create rule to expand the second %?

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

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

发布评论

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

评论(1

风透绣罗衣 2024-12-09 11:47:16

在这种情况下,
二次扩展
可能有帮助。
例如:

FILES=a b c
.SECONDEXPANSION:
$(FILES): % : src/$*/$*
    @echo "$@ 
lt;"

如果您的 GNU make 版本为 3.80 或更低,$* 可能无法工作。
在这种情况下,可能需要 $@ 和一些文本操作。

In this case,
secondary expansion
might help.
For example:

FILES=a b c
.SECONDEXPANSION:
$(FILES): % : src/$*/$*
    @echo "$@ 
lt;"

If your GNU make's version is 3.80 or lower, $* might not work.
In that case, $@ and some text manipulation might be needed instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文