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

 .PHONY: clean

 CC = gcc
RM = rm EXE =simple
SRCS =$(wildcard *.c)
OBJS =$(patsubst %.c, %.o, $(SRCS))
$(EXE): $(OBJS)
$(CC) -o $@ $^
#\
%.o : %.c\
$(CC) -o $@ -c $^删除这两句
clean:
$(RM) -rf $(EXE) $(OBJS)

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

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

 %.o :%.c

   $(CC) -c $(CPPFLAGS) $(CFLAGS)  $^

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

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

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

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

最新文章

  1. HTML5有特色的进度条
  2. java 猜数字游戏
  3. VR外包 虚拟现实外包 北京软件公司
  4. JS手机访问PC端网站自动跳转到手机端网站
  5. Django 1.6.0 正式发布,大幅改进事务处理
  6. 【原】简述使用spark集群模式运行程序
  7. JSP for query
  8. (三)开始在OJ上添加签到功能
  9. 在XML里的XSD和DTD以及standalone的使用3----具体使用详解
  10. mysql日志的查看与开启
  11. Android07-Android广播
  12. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A B题
  13. java开发小技巧
  14. python基础(八种数据类型)
  15. Android开发之漫漫长途 XIX——HTTP
  16. python中global 和 nonlocal的使用
  17. 中小团队快速实现持续交付iOS版
  18. Caffe学习系列(17): blob
  19. numpy的where函数
  20. sgu 176 上下界网络流最小可行流带输出方案

热门文章

  1. C#视频播放器【转】
  2. .net平台推送ios消息
  3. linux 处理键盘 鼠标事件
  4. hadoop中典型Writable类详解
  5. EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他
  6. mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO
  7. java梳理-一个汉字占多大空间
  8. Swift学习笔记 - 变量和常量
  9. PHP XML Parser函数
  10. laravel 安装环境安了三天!!