Wednesday, August 18, 2010

Makefile

1. Makefile的自动变量

"$@":  规则中的目标文件名。如果规则中有多个目标(使用'%'匹配模式),那"$@"就是触发该规则的目标文件名。

"$<": 依赖目标中的第一个目标名字。


"$?":  所有比目标新的依赖目标的集合,以空格分隔。

"$^ ":  所有的依赖目标的集合,以空格分隔。如果某个文件在依赖中重复,那这个变量会去除重复,只保留一份。

"$+ ":  与"$^"很接近,也是所有依赖目标的集合。只是它不去除重复的依赖。

"$*":  1) 对于明确规则(explicit rule), 如果目标文件的后缀是Make系统认识的,则"$*"代表目标名减去后缀部分。如bar/foo.c, $* = bar/foo

          2) 对于隐含规则(implicit rule), "$*"包含了目标文件的主干部分。

No comments: