目录
作者和朋友建立的社区:非科班转码社区-CSDN社区云💖💛💙
期待hxd的支持哈🎉 🎉 🎉
最后是打鸡血环节:你只管努力,剩下的交给天意🚀 🚀 🚀
会不会写 makefifile ,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中, makefifile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefifile 带来的好处就是 ——“ 自动化编译 ” ,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。make 是一个命令工具,是一个解释 makefifile 中指令的命令工具,一般来说,大多数的 IDE 都有这个命令,比如:Delphi 的 make , Visual C++ 的 nmake , Linux 下 GNU 的 make 。可见, makefifile 都成为了一种在工程方面的编译方法。make是一条命令,makefifile 是一个文件,两个搭配使用,完成项目自动化构建。
makefile:是在当前路径下的一个普通文件(包含)
1. 依赖关系
2. 依赖方法
目的:形成可执行程序
make -- 生成可执行程序
make clean -- 清理可执行程序
PS:对于make为什么会直接生成可执行程序而不是clean,是因为我们把生成可执行程序放在前面的!
关于PHONY
PHONY:虚假的,伪造的
PHONY是makefile语法格式中的一个关键字
.PHONY 后面跟着的都是伪目标
伪目标也是目标,后面也有依赖关系和依赖方法
这里clean后面依赖关系为空clean被.PHONY修饰说明总是被执行的
意思就是无论目标文件是否新旧,照样执行依赖关系!(不懂看下面会解释)
对于make -- 发现
我们发现不会总是被执行,与上面是对立的!
那makefile是如何识别我们的文件(exe/bin)是新还是旧的呢?
我们知道 文件=内容+属性
stat(状态)
这里有三个时间,作者的是汉化过的,原本是英文哈
对应是 Access Modify Change
当我们改变内容的时候,改变的是Modify记录的时间
当我们改变属性的时候,改变的是Change记录的时间
(还有就是改变内容的时候,大概率会改变文件属性(如Size))
根据对比源文件和可执行程序的最近修改时间,评估要不要重新生成!
多文件的 makefile
结果
PS:关于为什么makefile里面没有看到test.h,是因为test.h早在预处理的时候就已经包含到test.c里面了哈!
总结
make是个命令
makefile是个文件
makefile里面是依赖关系+依赖方法
最后的最后,创作不易,希望读者三连支持💖
赠人玫瑰,手有余香💖