首先我们讨论一下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编程我会在下面的文章中陆续的分享,也可以关注‘奇牛学院’
来一起讨论