在 Makefile 中定义自定义后缀规则

Make 可以自动创建 a.o 文件,在相应的 .c 文件上使用 cc -c。 这些规则内置于 make 中,我们可以利用这一优势来缩短 Makefile。 如果我们在当前目标所依赖的 Makefile 的依赖行中仅指定 .h 文件,则 make 将知道已经需要相应的 .cfile。 我们不必包含编译器的命令。

这进一步减少了 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 文件的默认规则。

查看笔记

扫码一下
查看教程更方便