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

📅  最后修改于: 2020-11-01 04:37:28             🧑  作者: Mango


Make可以在相应的.c文件上使用cc -c自动创建ao文件。这些规则是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文件所使用的默认规则。