自动推导规则

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

原因

因为make本身存在默认的规则,能够自动完成对.c文件的编译,并生成对应的.o文件。
它执行命令cc -c来编译.c``文件。

示例

objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.o
edit : $(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)

.PHONY

1

clean:rm $(OBJ)

2

.PHONY:clean
clean:-rm $(OBJ)

实际应用时,我们会用第二种写法。这两个实现不同:

  1. 通过.PHONY特殊目标将clean目标声明为伪目标。避免当磁盘上存在一个名为clean文件时,目标clean所在规则的命令无法执行。
  2. 在命令行之前使用-,意思是忽略命令rm的执行错误。

2.自动推导、.PHONY相关推荐

  1. Makefile_05:Make命令的自动推导

    Make命令的自动推导 一.简化Makefile GNU 的 make 很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必 要去在每一个[.o]文件后都写上类似的命令,因为,我们的 ...

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

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

  3. linux 变量引用 和 变量的自动类型转换 c++,C++能不能让编译器自动推导变量类型吗...

    描述 随着计算机性能的持续提升,编程语言似乎迎来了一次大爆发,各种编程语言不断出现,乐意折腾的人总能找到一门适合自己胃口的编程语言. 总能找到一门适合自己胃口的编程语言 程序员的口味大体可以分为两种: ...

  4. 1734_makefile学习小结_4_隐性规则自动推导

    全部学习汇总: GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking a ...

  5. make命令的自动推导

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

  6. 一个能自动搜索源文件并自动推导的Makefile

    From: http://blog.csdn.net/yuliying/article/details/49635485 这份makefile可以将当前makefile所在文件夹以及所有子文件夹中的c ...

  7. makefile学习3:隐晦规则,自动推导

    makefile可根据.o文件来推导出编译需要(依赖)的.c文件. 原来的makefile: gyz@debian:~/mc$ cat Makefile test:test.o printarr.og ...

  8. 一个通用的makefile写法,自动推导文件的依赖关系

    温习之用. 假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下: 1 定义可执行文件的名称 TARGET ...

  9. C++11 auto自动推导

    文章目录 C++98 auto C++11赋予auto更强大的功能 规则 auto的常见用法 用于代替冗长复杂.变量使用范围专一的变量声明. 在定义模板函数时,用于声明依赖模板参数的变量类型. 模板函 ...

最新文章

  1. 好物推荐丨故宫出品“烧脑奇书”:豆瓣9.2分,悬疑解谜参与感强,11种结局,可以玩一年!...
  2. 最萌办公室采访 | 网易程序员灵魂大拷问(文末有福利)
  3. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(NumPy科学计算库<矩阵和随机数>python)
  4. linux进入字符界面编程,MPlayer字符界面操作方法
  5. 【BZOJ1038】【codevs1412】瞭望塔,半平面交/三分法
  6. python中for、while循环、if嵌套的使用
  7. 【ElasticSearch】Es 源码之 PageCacheRecycler 源码解读
  8. 五大最主流浏览器综合性能测试
  9. 21天Jenkins打卡Day9-保留构建
  10. Asp.net MVC 搭建属于自己的框架(一)
  11. HDU 5834 Magic boy Bi Luo with his excited tree 树形DP
  12. 【电子产品】Fast FWR200 公司使用设备人数超过20个后,之后的设备无法上网
  13. vue 使用 vue-awesome-swiper(swiper)解决方法
  14. after meet KeyNi liu
  15. itunes显示无法更新服务器失败怎么办啊,iTunes更新时出错怎么办?iTunes更新时出错的解决方法...
  16. erp系统软件php,SMALL-ERP 一个用PHP写的小型ERP系统,麻雀虽小,五脏俱全。 ERP-EIP-OA-Portal 企业管理 271万源代码下载- www.pudn.com...
  17. 阿里云服务器购买配置、环境部署、搭建网站教程(转载)
  18. 电脑录音软件哪个比较专业
  19. 项目总结(打开一个新页面下载exsel表格或者文档模板)
  20. awvs安装及问题解决

热门文章

  1. vim配置python命令自动补全
  2. 【建议收藏】回收站数据恢复如何操作?3个方案帮你恢复删除的文件
  3. 数据科学必备Pandas、NumPy进行数据清洗方法详解
  4. 初学者冒泡排序C语言
  5. 最新思科CQS认证考试科目(转)
  6. 区块链——Hyperledger Fabric2.2多机搭建及区块链浏览器
  7. 杂散光分析与控制设计 课程大纲
  8. 移动端开发注意事项、需要注意的问题、特殊属性、精灵图、座固定有自适应的布局
  9. ZynqMP升级方案Qspi+emmc
  10. Linux “/“ 分区扩容