Makefile 12——改善编译效率

从Makefile的角度看,一个可以改善编译效率的地方与其中的隐式规则有关。为了了解make的隐式规则,我们把之前的simple项目的Makefile做一点更改,删除生成.o文件的规则(与隐式规则相对应的是,在Makefile中定义的规则称为显示规则)。

 1 .PHONY: clean
 2 
 3 CC = gcc
 4 RM = rm
 5 
 6 EXE =simple
 7 SRCS =$(wildcard *.c)
 8 OBJS =$(patsubst %.c, %.o, $(SRCS))
 9 $(EXE): $(OBJS)
10     $(CC) -o $@ $^
11 #
12 %.o : %.c
13     $(CC) -o $@ -c $^删除这两句
14 clean:
15     $(RM) -rf $(EXE) $(OBJS)

我们make一下,还是成功了,这就是make存在自带的隐式规则的缘故。

在make中存在大量的隐式规则,通过隐式规则将大大简化Makefile的编写。这里简化后的Makefile之所以能工作,是因为make中有着下面这样的隐式规则:

1 %.o :%.c
2 
3   $(CC) -c $(CPPFLAGS) $(CFLAGS)  $^

 

make需要查找隐式规则会降低编译效率,为了禁止使用make所自带的隐式规则,可以通过make 的 -r选项来实现。

所以,隐式规则是可以被覆盖的。当Makefile中自己定义了生成.o的文件规则时,make就以它为规则,该规则覆盖了make自带的隐式规则。更多隐式规则可以查看GNU MAKE。make -r的使用可以提高每个源文件的编译效率。

恰当的书写注释是个好习惯。

Makefile中的注释以“#”开始,注释多行可以在行末加上""。

原文地址:https://www.cnblogs.com/yangguang-it/p/6889968.html