网站搭建网站管理,wordpress htnl短代码,嘉兴网站建设嘉兴,建一个网站式系统#x1f440;樊梓慕#xff1a;个人主页 #x1f3a5;个人专栏#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》
#x1f31d;每一个不曾起舞的日子#xff0c;都是对生命的辜负 目录
前言
1.什么是make / makefile
2…
樊梓慕个人主页 个人专栏《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》
每一个不曾起舞的日子都是对生命的辜负 目录
前言
1.什么是make / makefile
2.如何使用make / makefile
1我们来看makefile如何写
2如何与make搭配使用
3.make和makefile是如何知道可执行程序是比较新的 前言
本篇文章可以快速让你具备编写makefile的能力并快速上手使用。 欢迎大家收藏以便未来做题时可以快速找到思路巧妙的方法可以事半功倍。 GITEE相关代码fanfei_c的仓库 1.什么是make / makefile
make是一条命令makefile是一个文件两者搭配使用就可以完成项目自动化构建类似VS编译器集成开发环境的自动化编译。
make会在当前目录下寻找名字叫Makefile或makefile的文件并根据文件内容执行相关指令。
注文件名必须为上面其一。 2.如何使用make / makefile
1我们来看makefile如何写
首先我们用vim写一段代码命名为mytest.c。
平时我们想要编译该.c文件如何做呢 gcc -o mybin mytest.c 但我们知道平时所用的比如VS编译器可不仅仅干了这一个工作还有比如工程清理即清理解决方案清理目标文件的意思等工作。
这时候就需要makefile出手了这也是为什么叫自动化构建的原因。
在makefile中我们要按照如下格式书写语句 mybin:mytest.c //依赖关系 gcc -o mybin mytest.c //依赖方法 mybin为目标文件mytest.c为依赖文件当然不一定只有这一个依赖文件。
注第二行缩进不可去。
我们把刚才提到的工程清理加上 另外我们还可以利用代表目标文件mybin^代表所有依赖文件mytest.c 到这里还不够我们要再讲一下如果mytest.c没有改变那么make执行会重新编译生成新的目标文件mybin么
答案是不会如果目标文件所依赖的后面的依赖文件列表中有文件修改时间比目标文件新那么make就会执行后面所定义的命令生成新的目标文件否则不会。
那clean呢
如果我们直接输入make由于clean没有被第一个目标文件直接或间接关联那么它后面所定义的命令将不会被自动执行所以我们需要使用make clean指令。
但还有另一个问题
如果当前目录没有clean的同名文件那还好不影响每次make都会执行clean。
但一旦当前目录有一个clean的同名文件此时clean又没有依赖文件那就麻烦大了make clean会检测依赖文件列表中的文件有没有clean新但是clean没有依赖文件目标文件被认为是最新的这就导致clean就不会被执行了。
解决方法是将目标文件clean设置为伪目标用.PHONY修饰。
伪目标的特性是总会被执行的。
所以最终makefile中我们一般这样写 2如何与make搭配使用
保存好前面的makefile后我们直接在命令行输入make。 make后我们再查看当前目录会发现多出了目标文件mybin。 ./mybin 执行该目标文件 我们看该目标文件成功执行。
那我们再来试一下make clean 我们发现make clean也可以成功执行。 看到这你已经掌握了make/makefile的基本用法 3.make和makefile是如何知道可执行程序是比较新的
对比时间如果可执行程序.exe修改时间比所有.c文件修改时间新说明他就是最新的。
那么我们来认识下linux下文件时间的概念
首先利用stat命令查看某个文件的信息。 我们发现了三个时间
Access --- 访问时间非实时更新占用内存Modify --- 修改时间针对内容的修改Change --- 改变时间针对属性的修改 文件是由内容属性构成。 如果你对该系列文章有兴趣的话欢迎持续关注博主动态博主会持续输出优质内容
博主很需要大家的支持你的支持是我创作的不竭动力
~ 点赞收藏关注 ~