http://blog.youkuaiyun.com/haoel/article/details/2886/
整理陈皓的《跟我一起学Makefile》的自动化变量
自动化变量 |
说明 |
例子 |
$@ |
表示规则中的目标文件集 |
|
$% |
仅当目标是函数库文件(Unix下[.a],Window下[.lib])时,表示规则中的目标成员名。 |
如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a" |
$< |
依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。 |
|
$? |
所有比目标新的依赖目标的集合。以空格分隔 |
|
$^ |
所有的依赖目标的集合,以空格分隔。如果有重复依赖目标,去除重复 |
|
$+ |
也是所有依赖目标的集合。不去除重复的依赖目标。 |
|
$* |
目标模式中"%"及其之前的部分 |
如果目标是"dir/a.foo.b",并且目标的模式是"a.%.b",那么,"$*"的值就是"dir/a.foo" |
$(@D) |
表示"$@"的目录部分(不以斜杠作为结尾) |
如果"$@"值是"dir/foo.o",那么"$(@D)"就是"dir",而如果"$@"中没有包含斜杠的话,其值就是"."(当前目录)。 |
$(@F) |
表示"$@"的文件部分 |
如果"$@"值是"dir/foo.o",那么"$(@F)"就是"foo.o", |
$(*D) |
表示"$*"的目录部分 |
|
$(*F) |
表示"$*"的文件部分 |
|
$(%D) |
表示"$%"的目录部分 |
|
$(%F) |
表示"$%"的文件部分 |
|
$(<D) |
表示"$<"的目录部分 |
|
$(<F) |
表示"$<"的文件部分 |
|
$(^D) |
表示"$^"的目录部分 |
|
$(^F) |
表示"$^"的文件部分 |
|
$(+D) |
表示"$+"的目录部分 |
|
$(+F) |
表示"$+"的文件部分 |
|
$(?D) |
表示"$?"的目录部分 |
|
$(?F) |
表示"$?"的文件部分 |
|