Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3965716
  • 博文数量: 408
  • 博客积分: 10227
  • 博客等级: 上将
  • 技术积分: 9820
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 21:48
个人简介

非淡泊无以明志,非宁静无以致远

文章存档

2022年(1)

2021年(1)

2020年(2)

2019年(5)

2018年(4)

2017年(3)

2016年(24)

2015年(8)

2014年(7)

2013年(3)

2012年(1)

2011年(23)

2010年(179)

2009年(147)

分类: 系统运维

2016-07-08 17:12:52

         默认的情况下,make会在工作目录(执行make的目录)下按照文件名顺序寻找makefile文件读取并执行,查找的文件名顺序为:GNUmakefile”、“makefile”、“Makefile”。

         通常应该使用“makefile”或者“Makefile”作为一个makefile的文件名(我们推荐使用“Makefile”,首字母大写而比较显著,一般在一个目录中和当前目录的一些重要文件(README,Chagelist等)靠近,在寻找时会比较容易的发现它)。而“GNUmakefile”是我们不推荐使用的文件名,因为以此命名的文件只有“GNU make”才可以识别,而其他版本的make程序只会在工作目录下“makefile”和“Makefile”这两个文件。

         如果make程序在工作目录下无法找到以上三个文件中的任何一个,它将不读取任何其他文件作为解析对象。但是根据make隐含规则的特性,我们可以通过命令行指定一个目标,如果当前目录下存在符合此目标的依赖文件,那么这个命令行所指定的目标将会被创建或者更新,参见注释。

         当makefile文件的命名不是这三个任何一个时,需要通过make的“-f”或者“--file”选项来指定make读取的makefile文件。给make指定makefile文件的格式为:“-f NAME”或者“—file=NAME”,它指定文件“NAME”作为执行make时读取的makefile文件。也可以通过多个“-f”或者“--file”选项来指定多个需要读取的makefile文件,多个makefile文件将会被按照指定的顺序进行链接并被make解析执行。当通过“-f”或者“--file”指定make读取makefile的文件时,make就不再自动查找这三个标准命名的makefile文件。

注释:通过命令指定目标使用make的隐含规则:

当前目录下不存在以“GNUmakefile”、“makefile”、“Makefile”命名的任何文件,

1)当前目录下存在一个源文件foo.c的,我们可以使用“make foo.o”来使用make的隐含规则自动生成foo.o。当执行“make foo.o”时。我们可以看到其执行的命令为:

cc –c –o foo.o foo.c

之后,foo.o将会被创建或者更新。

2)如果当前目录下没有foo.c文件时,就是make对.o文件目标的隐含规则中依赖文件不存在。如果使用命令“make foo.o”时,将回到到如下提示:

make: *** No rule to make target ‘foo.o’. Stop.

3)如果直接使用命令“make”时,得到的提示信息如下:

make: *** No targets specified and no makefile found. Stop.

阅读(1351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~