makefile的机制,执行命令的流程分析

makefile的机制,流程分析

calc:add.o sub.o multi.o
        gcc add.o sub.o multi.o calc.cpp -o calc

add.o:add.cpp
        gcc -c add.cpp -o add.o

sub.o:sub.cpp
        gcc -c sub.cpp -o sub.o

multi.o:multi.cpp
        gcc -c multi.cpp -o multi.o

clean:
        rm -rf *.o calc

按照这个例子分析,我们,make命令执行后会先执行目标后面的依赖,

在这里插入图片描述

如果没有依赖就执行后面的命令,比如clean操作

在这里插入图片描述

依赖分两种情况,存在或者不存在

我们现在这种情况是不存在的

calc:add.o sub.o multi.o

所以会去执行其他的目标,比如add.o:add.cpp,因为我们的add.cpp是他的依赖,再去找这个依赖看看存不存在,发现当前文件中存在这个依赖,所以执行后面的编译代码。

保证目标是用最新的依赖生成的

如果提示这个就是表示文件已经是最新的了

在这里插入图片描述

如果文件代码有修改 重新执行make的时候就会重新编译生成一份新的文件

假设我们现在修改下add.cpp文件

在这里插入图片描述

重新make一下

在这里插入图片描述

只会执行我们修改的文件的代码指令,

其他文件没有修改过的不会执行编译指令。

第一次全完编译工后面只编译最新的代码(部份编译)