makefile的简单使用
来源:https://www.bilibili.com/video/BV1dt411f7TZ/?p=74
我对于makefile的理解就是对一系列的命令做一个封装,只留下一个接口make
以前刚接触时也就只知道一些高大上的名词,什么shell编程之类的,,还以为是什么很了不得的东西,能接触到就已经很牛逼哄哄了,可以做出什么作品了,,
如今再看,确实也了不得,好像也应该能做出什么东西了,,,,虽然还是菜,还是什么都不会,但好像也没那么牛逼了,,就这么回事嘛
看一下最简单地makefile的编写:
目标:依赖
规则
这两行就算最简单的makefile的架构了,,,依赖按照规则执行对应命令最后生成目标,这样就算完成一个最简洁的makefile文件的编写,
带来的效率提升就是不再需要每次都手动输入一堆命令,而只需要调用生成的接口make即可
所谓“万变不离其宗”,之后一系列的花里胡哨的东西不过都是在这基础上修修改改而已,,虽然暂时看起来有些花样我还不能理解(ノへ ̄、)
version 2.0
最基础的架构只是一种思想,一种解决问题最有效地算法,,算是一种创造性或者是革命的东西,,
而要实现它的价值,就要不断地进行摸索、变革,,充分压榨出这种思想的最大的效益,,,
于是,以最初始的.c源文件作为依赖,确实可以完成最后我们想要的目标,这个原始的过程存在许多可节约的开销,,
每一次改变对于每一个.c源文件经过预处理、编译、汇编、链接,而没有改变的.c源文件再次经历这一过程最后的结果是一样的,
谁变处理谁,的想法出现了,而大牛们也实现了,,,
最终目标需要依赖按照规则生成,,就会倒推需要的规则,,一层层的又返回来生成最终目标,这个最终目标就是最晚生成的,,,
只要检索文件信息读取生成时间,只要比最终目标生成晚的就再次编译生成,,
以.o文件作为依赖,对修改了的.c源文件进行完整编译,最后只需要执行相对耗费资源较少的链接即可,,
version 3.0
进步就是不断进行各种优化,将缺点带来的影响降至最低,将优点带来的效益放大至最大,,
虽然这个过程逐渐变得不再那么人性,,但是专业的人做专业的事,,,
makefile作为广泛使用的工程管理脚本,有自己的一套规则,,,(我也不懂,以后再说)
这算是我能看动的最后一个版本,,,,(ノへ ̄、)
version 4.0
不止自动变量,还引入了函数,,o( ̄ヘ ̄o#)
知其大意不知其所以然,,,
version 5.0
好消息!好消息!!
为了照顾广大学渣,本店现特推出低智低能的菜鸡版本,走过路过不要错过,,,
据说菜鸡们能写成在这样就算及格了,,,┑( ̄Д  ̄)┍
一小部分规则:
$<:依赖中第一个
$^:所有依赖
$@:目标
%:自动匹配
$:取值