GNU Make 中的“%”字符有什么作用?
我正在使用 GNU make。在我得到的 Makefile 中,我看到符号“%”。例如在上下文中 %.c、%.asm、%.o 等。(这是一个通配符,将返回该扩展名的所有文件)
% 是什么意思?
下面的规则会做什么:
%.o: %.c
gcc $< -o:$@
谢谢,
-AD
I am using GNU make. In a Makefile that I got, i see the symbol '%'. e.g. in context of
%.c, %.asm , %.o etc.. (Is it a wildcard that will return all the files of that extension)
What does % mean?
What will the below rule do:
%.o: %.c
gcc lt; -o:$@
thank you,
-AD
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
规则:
将使用下面的命令为每个 c 文件构建一个目标文件。所以是的,% 就像一个通配符,但我倾向于将其视为“对于每个”,因为这就是规则的结果。
$<
表示依赖文件,$@
表示要构建的对象。如果您这样做:这里
$@=fred.o
和$<=fred.c
同样给出
$@=fred.o
和$<=fred.c george.c
。编辑:从命令中我将对此进行扩展。
%
将匹配与其周围匹配的所有内容。所以%.c
表示当前目录下的所有 .c 文件。asm/%.asm
表示子目录asm 中所有扩展名为.asm
的文件。它的作用就像一个令牌,因此每当您下次在标签中使用%
ie 时,都会使用找到的任何内容。因此,规则:
给定
arch/hello.S
、arch/bye.S
、arch/somethingelse.S
将创建obj /asm/hello.o
、obj/asm/bye.S
、obj/asm/somethingelse.o
。The rule:
Will for each c file build an object file using the command below it. So yes, % is like a wildcard, but I tend to think of it as "for each" because that's what happens as a result of the rule.
$<
means dependent files and$@
means the object to be built. If you did this:Here
$@=fred.o
and$<=fred.c
Likewisegives
$@=fred.o
and$<=fred.c george.c
.Edit: from the commands I shall expand on this.
%
will match everything matching that around it. So%.c
means all the .c files in the current directory.asm/%.asm
means all the files in the subdir asm with the.asm
extension. It acts like a token, so whatever is found will be used whenever you next use%
i.e. in the label.So, the rule:
Given
arch/hello.S
,arch/bye.S
,arch/somethingelse.S
will createobj/asm/hello.o
,obj/asm/bye.S
,obj/asm/somethingelse.o
.