2008年11月14日

makefile规则概略

1。基本规则
      target: components
TAB rule
第一行表示的是依赖关系.第二行是规则.

2。三个常用变量
$@目标文件,$^所有的依赖文件,$<第一个依赖文件.

3。一个缺省规则
.c.o:
gcc -c $<
这个规则表示所有的 .o文件都是依赖与相应的.c文件的.

4。引用变量
$(变量名)

5。函数
makefile 里的函数跟它的变量很相似——使用的时候,你用一个$符号跟开括号,函数
名,空格后跟一列由逗号分隔的参数,最后 用关括号结束。例如,在 GNU Make 里 有一
个叫 'wildcard' 的函 数,它有一个参数,功能是展开成一列所有符合由其参数 描述的
文 件名,文件间以空格间隔。你可以像下面所示使用这个命令:
SOURCES = $(wildcard *.c)

这行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量 SOURCES 里。当然
你不需要一定要把结果存入一个变量。

另一个有用的函数是 patsubst ( patten substitude, 匹配替 换的缩写)函数。
它 需要3个参数——第一个是一个需要匹配的 式样,第二个表示用什么来替换它,第三
个是一个需要被处理的 由空格分隔的字列。例如,处理那个经过上面定义后的变量,
OBJS = $(patsubst %.c,%.o,$(SOURCES))

这行将处理所有在 SOURCES 字列中的字(一列文件名),如果它的 结尾是 '.c'
就 用 '.o''.c' 取代。注意这里的 % 符号将匹 配一个或多个字符,而它每次所匹
配的字串叫做一个'柄'(stem) 。 在第二个参数里, % 被解读成用第一参数所匹配的 那个柄。

6。产生依赖规则
depends : $(SOURCES)
gcc -M $(SOURCES) > depends
depends 文件将会含有由 gcc产生的关于源码文件的规则(注意-M开关)

没有评论: