如果我们编译 一个程序
, 我们可以用下面的方式
gcc 源文件 -o 目标文件
g++ 源文件 -o 目标文件
几个程序倒还好, 如果要编译上千个, 上万个程序, 那不得累死?
这时候, 我们想如果有一个 自动化编译
就好了 ~~
make
悄悄滴说: 这我在行啊 !!!
make
是一种构建工具,用于自动化构建和编译程序。它通常与一个名为 makefile/ Makefile
的文件一起使用,该文件包含了构建和编译程序所需的规则。
makefile/ Makefile — — 是一种 文件
, 包含了指令执行需要的 依赖关系 和 依赖方法
make — — 是一种 指令
, 通过执行makefile/ Makefile里面的内容来进行自动化构建和编译程序
️何为依赖方法? 何为依赖关系?
这里有两个问题:
为什么make是编译, 而make clean 才是清理工作?
首先, 清楚一点 make + 目标文件
, 就是 执行生成目标文件的依赖方法
其次, 解释默认make 是 编译工作, 而make clean 才是清理工作. 这时候我们来看一下 makefile里面的内容就清楚了
总结一下:
(1) make 是执行makefile/ Makefile文件中的第一条依赖方法
(2) make + 目标文件 是可以指定执行哪一个依赖方法的
为什么只能make一次, 即只能编译一次? 而 make clean 可以执行多次?
文件最近修改的时间很重要
程序编译完成
⇒ 就意味着 生成的可执行文件的最近修改时间 新于 源文件
源文件的内容
并没有发生变化 ⇒ 那么我们的 可执行文件是不是就不需要更新 ⇒ 那么编译器就不需要再编译一次.Access, Modify, change, 这三个时间有什么区别呢?
Modify时间
️有没有一种方法可以一直允许编译?
岳飞(1103年3月24日~1142年1月27日)是一位南宋时期的抗金名将、军事家、战略家、民族英雄和书法家。他出生于相州汤阴县(今河南省汤阴县),从小就展现出过人的聪明才智和爱国情怀。在20岁时,他曾先后四次从军,参与了南宋时期的一系列战斗。