Make命令的自动推导

一、简化Makefile

GNU 的 make 很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必 要去在每一个[.o]文件后都写上类似的命令,因为,我们的 make 会自动识别,并自己推导 命令。我们的 makefile 再也不用写得这么复杂。我们的是新 的 makefile 又出炉了:

objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.oedit : $(objects)cc -o edit $(objects)main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h.PHONY : clean
clean :-rm edit $(objects) 

这种方法,也就是 make 的“隐晦规则”。上面文件内容中,“.PHONY”表示,clean 是个伪目标文件,在 rm 命令前面加了一个小减号表示:也许某些文件出现问题,但不要管,继续做后面的事。关于更为详细的“隐晦规则”和“伪目标文件”,后续讲。

二、更简化的Makefile(不推荐)

make 可以自动推导命令,那么我看到那堆[.o]和[.h]的依赖就有点不爽, 那么多的重复的[.h],可以把其收拢起来,更简化的 makefile 如下:

objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.oedit : $(objects)cc -o edit $(objects)$(objects) : defs.h
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h.PHONY : clean
clean :rm edit $(objects) 

这种风格,让我们的 makefile 变得很简单,但我们的文件依赖关系就显得有点凌乱了。文件的依赖关系看不清楚,如果文件一多,要加入几个新的.o 文件,那就理不清楚了。

Makefile_05:Make命令的自动推导相关推荐

  1. make命令的自动推导

    GNU 的 make 可以自动推导文件以及文件依赖关系后面的命令.因此,我们就没必要在 每个 .o 文件后都写上类似的命令, make命令会自动识别,并进行推导命令. 当make命令看到一个 .o 文 ...

  2. 2.自动推导、.PHONY

    自动推导规则 在用make编译.c源文件时,编译.c源文件规则的命令可以不用明确给出. 只给出需要重建的目标文件名(一个.o文件),make会自动为它寻找合适的依赖文件(对应的.c文件.对应指后缀名之 ...

  3. iOS 命令行自动打包 (archive)

    原文链接:http://www.jianshu.com/p/2247f76404eb iOS 开发工程师在测试修复 bug 的过程中,一般会存在频繁打包的情况,如果一步步在 xcode 中点击 arc ...

  4. C++17尝鲜:类模板中的模板参数自动推导

    目录 模板参数自动推导 示例 自定义类模板中的应用 Automatic deduction guides(自动推断向导) 模板参数自动推导 在C++17之前,类模板构造器的模板参数是不能像函数模板的模 ...

  5. python3手机脚本教学_python+adb命令实现自动刷视频脚本案例

    python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...

  6. 配置管理小报100329:脚本中ftp命令无法自动输入密码怎么办?

    为什么80%的码农都做不了架构师?>>>    Ø         知识点:      作者:王×××(zbwangjian@×××.cn) 脚本中ftp命令无法自动输入密码怎么办? ...

  7. android studio shell 命令行自动打包(mac 平台)

    android studio shell 命令行自动打包(mac 平台) 作者 CrazySongHang 关注 2015.04.10 22:56* 字数 494 阅读 4165评论 1喜欢 2 如果 ...

  8. python脚本案例-python+adb命令实现自动刷视频脚本案例

    python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...

  9. Jetson Nano非GUI界面自动登录设置(CLI命令行自动登录)

    为了能最大效率的利用Jetson Nano的显存,我们可以摈弃掉Jetson Nano的GUI图形界面功能,这样,Jetson Nano就可以有更多的资源用来做AI推理运算了(所有对Jetson Na ...

最新文章

  1. Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
  2. MongoDB 进阶-关联查询
  3. 抽象类,接口都与继承有关
  4. Chapter6 Commodity Forwards
  5. Adobe After Effects CS6 操作记录
  6. 【学习笔记】MOOC 数学文化赏析 笔记
  7. c++初始化成员列表_C++ 类构造函数初始化列表
  8. jquery-等待加载-显示隐藏-遍历
  9. 如何学习IOS开发~三个字(学思做)
  10. 【jQuery笔记Part1】12-jQuery元素的角标
  11. Java线程池—ThreadPoolExecutor
  12. java多线程基础_深入了解Java多线程的基础知识!
  13. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_21-页面查询服务端开发-Dao-分页查询测试...
  14. 支持10秒自毁的新芯片
  15. sha1 java 代码_HMAC-SHA1的java源代码实现
  16. 三、pgAdmin 4 布局设置
  17. 服务器远程训练,远程服务器 Linux 用cityscape训练DeepLabv3模型(Pytorch版)
  18. The YARN Timeline Service v.2
  19. 高效解答二进制数“多异或”和“多同或”连续运算问题
  20. 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪

热门文章

  1. 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
  2. 日期格式化的“疑难杂症”
  3. Lombok 安装、入门 - 消除冗长的 java 代码
  4. 浙江大学PAT上机题解析之1009. 说反话 (20)
  5. Vmware学习虚拟机操作时遇到的问题和解决
  6. webapck将css 打包后单独提取到一个css文件中
  7. 前端常用插件、工具类库汇总(上)
  8. 汇编语言介绍,内存和总线的初步认识
  9. windows server backup
  10. Python 学习笔记 - socket(基本原理和流程)