makefile概念和原理

首先我们讨论一下makefile是什么它为什么会存在

makefile是什么?长话短说makefile是一种代码管理工具,也是一种shell脚本

为什么会存在呢? 例如通常我们编译一个 cpp 文件:

g++ main.cpp -o main

这样的也许我们觉得很轻松 但是如果要编译的文件数量有几十个呢?

难道我们 g++ main.cpp server.cpp client.cpp ...... cpp  -o main 这样写嘛? 再者 我们每次修改之后都要重新编译这些文件

又要重新写 错误率不仅上升了,而且编译效率也不高 所以我们引用了makefile 这种代码管理工具

 

一.makefile的文件名种类:

1.Makefile    2.makefile   首字母大小写都是可以的

二, makefile 的规则

        规则的三要素:目标,依赖, 命令

        格式: 第一行: 目标:依赖条件

                   第二行: table (必须的)  命令

三者的关系

通俗一点讲就是   依赖(相当于原材料) -> 命令(加工)->  目标(产物)

 

我们先来写一个 简单的demo(后续我们将介绍相关的函数,变量和特殊的符号) 引用 一下makefile 是如何提高编译效率的

效果如下:

实行make命令  当然我们要先安装make  (很容易 就两条命令的事这里大家可以百度)

这里我们可以看到只需要一条命令就可以 编译整个文件 是不是很快捷

 

思考:当我们修改了main.cpp一个文件的时候,他会不会两个cpp文件都重新编译成 .o 的二进制文件呢?

答案是不会的,原理如下

这里的 两条规则就是因为

第一条规则找不到依赖了  去寻找的新规则

总之  makefile内部的工作原理 会帮我们 检测出谁是修改过的文件 (怎么检测的呢:根据文件最后一次修改的时间)

然后只编译那个修改过的文件生成 .o 文件  然后重新通过命令生成可执行文件main

更多的C/C++ linux编程我会在下面的文章中陆续的分享,也可以关注‘奇牛学院’

来一起讨论

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章