Chinaunix首页 | 论坛 | 博客
  • 博客访问: 413173
  • 博文数量: 116
  • 博客积分: 7087
  • 博客等级: 少将
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-19 23:32
文章分类

全部博文(116)

文章存档

2012年(1)

2011年(2)

2010年(10)

2009年(21)

2008年(18)

2007年(12)

2006年(21)

2005年(31)

我的朋友

分类:

2006-09-18 14:01:39

写Makefile,的确算是一个老掉牙的话题,国外关于这方面的文章实在太多,但是国内却没有人认真去翻译一下.导致真正需要用到Makefile的时候,往往只能照猫画虎,知其然,而不知其所以然.
 
这篇Blog我也不打算从头写起,只准备挑一两个我不明白的地方记录一下.
 
基本格式:
 
    target [target...] : [dependent ....]
    [ command ...]
 
Implict Rules -- 隐含规则
 
在Makefile里面,有时候会用到隐含规则.隐含规则的格式往往比较隐晦,所以理解起来比较困难.
 
例如以下这个例子:
 
.c.o:
        $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
 
这个地方,可以看到它似乎不符合标准格式. 因为这就是一个典型的隐含规则.
 
.c,.o都是文件扩展名(suffix),而且是标准的文件扩展名.所谓标准指得是为Make所认可的文件扩展名.一看到这种扩展名,Make就知道是什么意思.
 
2个标准suffix连续出现,并且后面有一个":",Make就认为这是一个隐含规则,就会执行后面的命令.
 
$@ 是特殊的Macro,指得是target;
$< 也是特殊的Macro,指得是source;
 
而在上面这个隐含规则中,.c是source,.o是target,不要写反了.
 
 
 
 
 

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