Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120053
  • 博文数量: 32
  • 博客积分: 506
  • 博客等级: 下士
  • 技术积分: 257
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-11 11:06
文章分类

全部博文(32)

文章存档

2012年(32)

分类: LINUX

2012-11-04 21:56:53

1,运算符
 
 =  定义的变量具有延迟展开特性。
:=   定义的变量会立即展开。
?=   如foo ?= $(bar)的意思是:如果foo没有定义过,那么?=相当于=,定义foo的值是$(bar),但不立
     即展开;如果先前已经定义了foo,则什么也不做,不会给foo重新赋值。
+=  运算符可以给变量追加值。例如:
    objects = main.o
    objects += $(foo)
    foo = foo.o bar.o
     object是用=定义的,+=仍然保持=的特性,objects的值是main.o $(foo)(注意$(foo)前面自动添
     一个空格),但不立即展开,等到后面需要展开$(objects)时会展开成main.o foo.o bar.o。
     如果变量还没有定义过就直接用+=赋值,那么+=相当于=。
 
2,常用的特殊变量
$@,表示规则中的目标。
$<,表示规则中的第一个条件。
$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。
$^,表示规则中的所有条件,组成一个列表,以空格分隔。
 
3,自动处理头文件的依赖关系
    可以用gcc的-M选项自动生成目标文件和源文件的依赖关系:不需要输出系统头文件的依赖关系,可以用-MM选项:
 
阅读(1928) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~