zoukankan      html  css  js  c++  java
  • 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中的注释以“#”开始,注释多行可以在行末加上""。

  • 相关阅读:
    版本控制器 git
    JS 严格模式
    backquote
    linux内存监控 free
    好的linux网站
    linux查看进程开始时间
    命令之 ulimit
    using JSTL
    javax.servlet.jsp.PageContext cannot be resolved to a type
    jstl c
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/6889968.html
Copyright © 2011-2022 走看看