make简介

Make工具及makefile文件编写简介

概述:

在Linux(unix)环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。make是一个工具,能够自动执行Makefile中的指令,make工具的使用关键在于编写makefile文件。

make命令:

举一个简单的例子来说明make命令执行的过程,在某代码目录下执行make命令,make工具会自动识别当前目录下的GUNmakefile、makefile或者Makefile作为执行文件,或者可以通过命令行指定相应的文件名:make –f NAME 或者 make –file = NAME,NAME即指定的文件名。

Makefile文件:

Makefile文件定义了一系列规则,make工具通过这些规则来构建工程。其主要包括三部分:规则的目标、规则的依赖和规则的命令。以下面的简单makefile文件为例(红色部分是为了方便说明加的行号):
#sample Makefile
edit : demo.o // 1
cc -o edit demo.o // 2
demo.o : demo.c demo.h //3
cc -c demo.c //4
clean : //5
rm edit demo.o //6
该例子中一共有三条规则,第1、2,3、4,5、6行分别是一条完整的规则。蓝色部分是规则的目标,绿色部分为规则的依赖(分为常规依赖和order依赖,这里不展开),黑色部分为规则的命令(make将第一个规则出现后,所有以tab开头的行当做命令处理)。目标就是最终要输出的文件,依赖就是构建目标需要用到的文件,命令则是定义了如何利用依赖去构建目标。make工具将makefile中的第一个目标作为最终目标,也作为开始执行的起点(有点像main函数),然后开始寻找最终目标的依赖,再查找依赖的依赖,递归生成所有依赖后,构建目标。下面图1的例子可以帮助我们更好地理解这个过程:
在这里插入图片描述

										图1
Make首先将out作为最终目标,然后查找其依赖a.o,就行查找目标为a.o的规则进而查找a.o的依赖,然后调用a.o的命令生成a.o;返回目标out的规则中继续b.o,当a.o与b.o都生成够,调用out的命令cc –o out a.o b.o生成最终目标。
再次编译时,当一个文件被修改,则所有相关文件都会被重新编译,如果没有修改则不做处理。

写在最后:

make还有很多其他功能点,例如include、环境变量、变量、函数、文件查找、查找动态库
查找静态库等,本文只是简单概述,可以在用到时再对应查询。参考资料GUN_make中文版。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值