【发布时间】:2021-07-05 05:41:40
【问题描述】:
在我遇到的 Makefile 中:
.SUFFIX: .c
这是.SUFFIXES: .c 的拼写错误吗,因为我找不到任何关于.SUFFIX 的信息。这有什么作用吗?
如果 Makefile 只使用模式规则,我什至需要在 Makefile 中使用它吗?
【问题讨论】:
在我遇到的 Makefile 中:
.SUFFIX: .c
这是.SUFFIXES: .c 的拼写错误吗,因为我找不到任何关于.SUFFIX 的信息。这有什么作用吗?
如果 Makefile 只使用模式规则,我什至需要在 Makefile 中使用它吗?
【问题讨论】:
假设您使用的是 GNU make,除非确实有一个名为 .SUFFIX 的用户目标,否则这可能是 .SUFFIXES: .c 的拼写错误。如果没有配方,您可以安全地删除它:没有配方就没有用处。
如果是 .SUFFIXES: .c 并且如果它有一个配方,它将重新定义以下隐含规则:
%: %.c
<recipe>
这是:
LINK.c = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
%: %.c
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
【讨论】: