Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173136
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 09:10
文章分类
文章存档

2016年(43)

我的朋友

分类: 嵌入式

2016-05-27 17:00:33

 

 

make是一个命令工具,是一个解释makefile中指令的命令工具

 

1.

伪指令include

该伪指令类似C语言中的#include,它允许一次编写常用的定义并包括它。include伪指令必须在一行中,第一个元素必须是include,并且跟一个要包含的文件名,如:

include default.mk

由于伪目标的特性是,总是被执行的

 

2.

Phony目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用phony目标:避免和同名文件冲突,改善性能。

已知phony目标并非是由其它文件生成的实际文件,make会跳过隐含规则搜索。这就是声明phony目标会改善性能的原因,即使你并不担心实际文件存在与否.

缺省目标是makefile中的第一个目标,通常将这个phony目标叫做’all’,其依赖文件为各个程序:

Phony它用来指定一个假想的工作目标,也就是说它后面的并不是一个实际文件,而且肯定要视为未更新(也就是说条件总是满足,需要处理)

 

3.

在写某个目标依赖的条件时,往往需要到源码中查看信息。如main.ogirls.oboys.o依赖的头文件,这中看源码的方式很容易出错,还有就是当为程序写好了Makefile,而源码改变了头文件依赖关系,需要重新写Makefile(还有可能忘记更新Makefile)。为了解决这个问题,可以在Makefile中用gcc  -M选项自动生成目标文件和源文件的依赖关系。如果不需要输出与程序相关的系统头文件则用gcc  -MM选项。

 

4.

 Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标

,一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。make所完成的也就是这个目标。

 

 

5.

makefile中的规则描述如何生成特定的文件,即规则的目标。规则列出了目标的依赖文件,指定生成或更新目标的命令。规则的次序是不重要的,除非是确定缺省目标:缺省目标是第一个makefile中的第一个规则;如果第一个规则有多个目标,第一个目标是缺省的。有两个例外:以’.’开头的目标不是缺省目标;模式规则对缺省目标没有影响。通常我们所写的地一个规则是编译整个或makefile中指定的所有程序。

 

 

6

.C_MODULE_SRCS = $(wildcard ./*.c)

CSRC_OBJS = $(patsubst %.c, %.o, $(C_MODULE_SRCS))

注:$(C_MODULE_SRCS)变量要用括号括起来

 

 

 

 

 

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