在 Makefile 中定义自定义后缀规则
Make 可以自动创建 .o 文件,使用 cc -c 对应 .c 文件。这些规则内置于 make 中,您可以利用这一优势缩短 Makefile。如果您在 Makefile 的依赖行中仅指示当前目标所依赖的 .h 文件,make 就会知道相应的 .c 文件已是必需的。您不必包含编译器的命令。
这进一步减少了 Makefile,如下所示 −
OBJECTS = main.o hello.o factorial.o hello: $(OBJECTS) cc $(OBJECTS) -o hello hellp.o: functions.h main.o: functions.h factorial.o: functions.h
Make 使用一个名为 .SUFFIXES 的特殊目标来允许您定义自己的后缀。例如,参考下面给出的依赖行 −
.SUFFIXES: .foo .bar
它通知 make 您将使用这些特殊后缀来制定自己的规则。
类似于 make 已经知道如何从 .c 文件创建 .o 文件,您可以按照以下方式定义规则 −
.foo.bar: tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@ .c.o: $(CC) $(CFLAGS) -c $<
第一条规则允许您从 .foo 文件创建 .bar 文件。它基本上会打乱文件。第二条规则是 make 使用的默认规则,用于从 .c 文件创建 .o 文件。