问题描述
在我遇到的 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 $@