目标 .SUFFIX 在 Makefile 中是不是有任何意义?

Posted

技术标签:

【中文标题】目标 .SUFFIX 在 Makefile 中是不是有任何意义?【英文标题】:Does the target .SUFFIX have any meaning in a Makefile?目标 .SUFFIX 在 Makefile 中是否有任何意义? 【发布时间】:2021-07-05 05:41:40 【问题描述】:

在我遇到的 Makefile 中:

.SUFFIX: .c

这是.SUFFIXES: .c 的拼写错误吗,因为我找不到任何关于.SUFFIX 的信息。这有什么作用吗?

如果 Makefile 只使用模式规则,我什至需要在 Makefile 中使用它吗?

【问题讨论】:

【参考方案1】:

假设您使用的是 GNU make,除非确实有一个名为 .SUFFIX 的用户目标,否则这可能是 .SUFFIXES: .c 的拼写错误。如果没有配方,您可以安全地删除它:没有配方就没有用处。

如果是 .SUFFIXES: .c 并且如果它有一个配方,它将重新定义以下隐含规则:

%: %.c
    <recipe>

这是:

LINK.c = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

%: %.c
    $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

【讨论】:

以上是关于目标 .SUFFIX 在 Makefile 中是不是有任何意义?的主要内容,如果未能解决你的问题,请参考以下文章

makefile

Makefile 中 .PHONY 的用途是啥?

make: *** 没有指明目标并且找不到 makefile。 停止

@: (在符号冒号处)在 Makefile 中是啥意思?

Makefile中同名目标的处理

如何将 C makefile 移植到 C++ makefile?