Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317413
  • 博文数量: 62
  • 博客积分: 2087
  • 博客等级: 大尉
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-20 21:08
文章分类

全部博文(62)

文章存档

2009年(7)

2008年(55)

我的朋友

分类: LINUX

2008-06-20 17:36:37

1.目标和依赖间的语法格式如下:
TARGETS : PREREQUISITES
COMMAND
...
或者:
TARGETS : PREREQUISITES ; COMMAND
COMMAND
...

2.函数wildcard
$(wildcard *.c)
为什么不用通配符?
因为通配符在Makefile中使能用在两种场合
(1)可以用在规则的目标、依赖中,make在读取Makefile时会自动对其进行匹配处理(通配符展开);
(2)可出现在规则的命令中,通配符的通配处理是在shell在执行此命令时完成的。


3.自动化变量
“$^”代表所有通过目录搜索得到的依赖文件的完整路径名(目录 + 一般文件名)列表。
“$@”代表规则的目标。所以对于一个规则我们可以进行如下的描述:

foo.o : foo.c
cc -c $(CFLAGS) $^ -o $@

4.通配符“~”
代表当前用户的宿主目录,比如‘~/bin'代表目录/home/username/bin

5.条件执行
ifeq ($(CC),gcc)
libs=$(libs_for_gcc)
else
libs=$(normal_libs)
endif
foo: $(objects)
$(CC) -o foo $(objects) $(libs)

6.更新静态库
ar用来创建或给静态库增加一个成员
ranlib用来更新静态库的符号索引表
$(SYSTEM_EVENT_LIB): $(SYSTEM_EVENT_OBJS)
 $(AR) cru $@ $^
 $(RANLIB) $@


7.变量引用、赋值
CROSS = arm_v5t_le-
AR = $(CROSS)ar
RANLIB = $(CROSS)ranlib

阅读(988) | 评论(0) | 转发(0) |
0

上一篇:directFB的基本概念

下一篇:Linux下的通配符

给主人留下些什么吧!~~