(1)makefile补充


我们看这些代码可以知道
1.make指令正常只能执行一次
2.make指令在执行一次之后 改变过依赖文件 可以再执行一遍
3.make指令会根据逻辑关系 自行推测执行顺序
4.make指令如果不指定确定的 默认是makefile文件的第一个指令
make指令一般情况下只能执行一次
因为没必要执行两次 两次执行的结果是一样的
但是如果执行第一遍之后 依赖文件内容改变了 第二次执行结果不一样 所以此时make指令就可以执行第二次
如果我们希望一个指令不管有没有文件更新都可以再次执行就可以加一个.PHONY
那系统怎么知道我们的依赖文件有没有改变呢?
系统是根据文件的时间先后来判断的
比如说make指令是把一个依赖文件A转换成生成文件B
那么
当 A的时间<B 说明文件 A没有在B生成后被改变 所以再生成一次A 得到的还是同样的B
当B的时间<A说明文件 A在B生成后被改变 所以再生成一次A 得到的还是同样的B
(2)makefile特殊符号
我们先来看$@和$^
$@表示依赖关系的左边的内容
$^表示依赖关系右边的内容
我们来看下面这个例子 在makefile文件里

等价于

$@等价于: 左边的test.exe
$^等价于 : 右边的test.cpp
@ 可以让make的指令不显示
比如这是没有@的make和makefile


这是有@的make和makefile


(2)stat
如何查看时间?
stat指令可以查看文件的时间属性

Acess 是最近一次访问文件的时间
Modify是最近一次修改文件内容的时间
Change是最近一次修改文件属性的时间
比如说我们要把文件的内容在在文件内复制一份
那么我们要访问进入到文件里面去 所以文件acess的时间会改
我们进入文件之后 在文件内要把文件内容复制一份
文件内容改变 所以Modify时间会改
同时文件大小改变了 所以 acess时间也会改
但是由于acess的时间太容易被改变了 所以系统优化了
可能几次访问才更新一次
这个时候我们就可以使用touch指令了
touch指令 + 一个已存在的文件名
就可以更新这个文件的时间属性


被折叠的 条评论
为什么被折叠?



