| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具 -> 正文阅读 |
|
[系统运维][ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具 |
目录 0.Linux项目自动化构建工具 - make/Makefile 0.Linux项目自动化构建工具 - make/Makefile1.make和makefile是什么?make是一个命令,makefile是一个文件 2.为什么要使用make和makefile?首先我们仍然写一段最简单的代码来供我们参考
我们在上篇文章说过,如果要编译这段C语言代码,我们可以使用
我们发现结果没有问题。?
? 此时我们再来查看发现源文件都被覆盖掉了 为了避免这种问题的发生,我们可以使用makefile自动化构建工具。
3. 怎么创建makefile我们前面提到了makefile是一个文件,因此我们在当前路径下创建一个makefile
3.1 ?编写makefile?makefile:在当前路径下的一个普通文件 makefil内部包含两个东西:1.依赖关系 2.依赖方法 我们进入makefile输入
注意:gcc要另起一行并且要先敲一个Tab键? ? 3.1.1 依赖关系
3.1.2 依赖方法
3.2 使用make至此我们一个最简单的makefile就写好了,现在我们只需要输入make命令就会在makefile中寻找依赖关系和依赖方法已经我们在makefile中表明的依赖方法。 ? 3.2.1 make的原理
上面第3点说到的,test所依赖的后面test,c文件的文件修改时间,以及test这个文件的修改时间,这又是什么意思呢? 其实呀,这个是非常简单的,我们举例来说! 我们写好makefile之后进行make,第一次make时会运行依赖方法,当我们不进行任何操作直接进行第二次make时,我们发现并没有执行依赖方法。而是告诉我们test目标文件已经是最新的了。这也非常的好理解,如果我们已经gcc一次之后生成了目标文件,如果我们不对源文件进行修改时,我们再次gcc时其实生成的目标文件没有进行修改,仍然是之前第一次的目标文件,因此系统就没必要再执行一次依赖方法。 而当我们对test.c进行修改时,我们再次使用make,此时我们发现执行了依赖方法,这也非常好理解,系统发现源文件被修改,gcc之后形成的目标文件肯定和之前的目标文件不同,因此会执行依赖方法。这就是上面第3点所提到的问题。 3.2.2 查看文件修改时间?我们使用stat可以查看文件的修改时间
文件的时间有3个也叫ACM时间:
假如我们改变一下源代码,我们发现修改文件的内容,Modify时间确实改变了,怎么chang time也发生了改变,这是因为修改文件内容可能会导致changtime的变化,内容变化后,属性可能会随之变化(比如文件的大小(size)). 3.3 编写项目清理3.3.1 如何编写项目清理
此时,我们使用make clean就会对所创建的目标文件进行清理 3.3.2 clean详解?
(本篇完) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 19:57:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |