Make使用简要

1、基本原理

Make根据文件的时间关系来更新目标,他根据makefile中定义的规则,如果依赖文件

的时间比目标文件更新,则更新目标文件,以及其他依赖更新目标文件的目标。

一个简单的 Makefile描叙规则如下:

Target : prerequisites

               Command

Target为规则的目标,通常是程序中间或者最后需要生成的文件名,也可以仅仅是一个标识,如用来执行某个动作(这样的目标称为伪目标)。

Prerequisites为目标的依赖文件。

Command为更新目标所需要执行的动作,如编译源文件等,可以是任意的shell命令或可在shell下执行的程序。一个规则可以有多个命令行,每个命令行必须以Tab开始。

Makefile中的第一个规则指定的目标默认为终极目标,make执行时如果没有指定目标,则总是生成第一个规则指定的目标。

 

2、变量

       Makefile中可以定义变量,赋值后使用,如

              objects= main.o kdb.o hello.o

       在需要objects的地方,使用$(objects)来代替一长串的目标文件,另外一个最常用的变量是指定编译工具,如:

              cc= gcc

       在规则中然后使用 $(cc) –c –o hello.o hello.c

       Makfile中变量展开是个严格的字符串替换过程,类似于c中的define展开。变量的定义有两种方法,一种是通过=define定义,这种变量只在使用他时候才展开,可能导致递归溢出,称为递归展开式变量,另一个种方式是通过:=定义,在定义的时候就展开,称为直接展开式变量,直接展开式变量中对其他变量的引用在定义时就被展开。

 

3、隐含规则

       .o文件默认总是从.c文件编译得到,这个是make的隐含规则,如:

              main.o:main.cdefs.h

                     gcc–o main.o –c main.c defs.h

       可以写成:

              main.o:defs.h

 

4、清除中间文件

              .PHONY: clean

              clean:

                     -rmedit $(objects)

       .PHONY明确指定clean为一个伪目标,而rm前的-表示忽略rm的执行错误

 

5Makefile的组成

       1  显示规则

       2  隐含规则

       3  变量定义

       4  指示符          make在读取makefile过程中需要执行的一个动作,如包含另一个

                                   makfile

       5  注释              #开头的文本行

 

6Makefile中包含其他makefile文件

       通过include指示符,告诉make去读取相应的makfile文件,格式如下:

              includeFILENAMES

       这和c中间的预处理有相似之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值