Makefile_05:Make命令的自动推导
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命令的自动推导相关推荐
- make命令的自动推导
GNU 的 make 可以自动推导文件以及文件依赖关系后面的命令.因此,我们就没必要在 每个 .o 文件后都写上类似的命令, make命令会自动识别,并进行推导命令. 当make命令看到一个 .o 文 ...
- 2.自动推导、.PHONY
自动推导规则 在用make编译.c源文件时,编译.c源文件规则的命令可以不用明确给出. 只给出需要重建的目标文件名(一个.o文件),make会自动为它寻找合适的依赖文件(对应的.c文件.对应指后缀名之 ...
- iOS 命令行自动打包 (archive)
原文链接:http://www.jianshu.com/p/2247f76404eb iOS 开发工程师在测试修复 bug 的过程中,一般会存在频繁打包的情况,如果一步步在 xcode 中点击 arc ...
- C++17尝鲜:类模板中的模板参数自动推导
目录 模板参数自动推导 示例 自定义类模板中的应用 Automatic deduction guides(自动推断向导) 模板参数自动推导 在C++17之前,类模板构造器的模板参数是不能像函数模板的模 ...
- python3手机脚本教学_python+adb命令实现自动刷视频脚本案例
python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...
- 配置管理小报100329:脚本中ftp命令无法自动输入密码怎么办?
为什么80%的码农都做不了架构师?>>> Ø 知识点: 作者:王×××(zbwangjian@×××.cn) 脚本中ftp命令无法自动输入密码怎么办? ...
- android studio shell 命令行自动打包(mac 平台)
android studio shell 命令行自动打包(mac 平台) 作者 CrazySongHang 关注 2015.04.10 22:56* 字数 494 阅读 4165评论 1喜欢 2 如果 ...
- python脚本案例-python+adb命令实现自动刷视频脚本案例
python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...
- Jetson Nano非GUI界面自动登录设置(CLI命令行自动登录)
为了能最大效率的利用Jetson Nano的显存,我们可以摈弃掉Jetson Nano的GUI图形界面功能,这样,Jetson Nano就可以有更多的资源用来做AI推理运算了(所有对Jetson Na ...
最新文章
- Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
- MongoDB 进阶-关联查询
- 抽象类,接口都与继承有关
- Chapter6 Commodity Forwards
- Adobe After Effects CS6 操作记录
- 【学习笔记】MOOC 数学文化赏析 笔记
- c++初始化成员列表_C++ 类构造函数初始化列表
- jquery-等待加载-显示隐藏-遍历
- 如何学习IOS开发~三个字(学思做)
- 【jQuery笔记Part1】12-jQuery元素的角标
- Java线程池—ThreadPoolExecutor
- java多线程基础_深入了解Java多线程的基础知识!
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_21-页面查询服务端开发-Dao-分页查询测试...
- 支持10秒自毁的新芯片
- sha1 java 代码_HMAC-SHA1的java源代码实现
- 三、pgAdmin 4 布局设置
- 服务器远程训练,远程服务器 Linux 用cityscape训练DeepLabv3模型(Pytorch版)
- The YARN Timeline Service v.2
- 高效解答二进制数“多异或”和“多同或”连续运算问题
- 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
热门文章
- 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
- 日期格式化的“疑难杂症”
- Lombok 安装、入门 - 消除冗长的 java 代码
- 浙江大学PAT上机题解析之1009. 说反话 (20)
- Vmware学习虚拟机操作时遇到的问题和解决
- webapck将css 打包后单独提取到一个css文件中
- 前端常用插件、工具类库汇总(上)
- 汇编语言介绍,内存和总线的初步认识
- windows server backup
- Python 学习笔记 - socket(基本原理和流程)