a.o : b.c c.c
$?所有比目标新的依赖目标的集合
$^代表所有依赖文件(b.c, c.c)
$@代表规则的目标文件(a.o)
$<代表第一个依赖文件(b.c)
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
在u-boot的makefile中,有这样里两段
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
第一个@是让编译时不显示这条命令。。。
第二个@并不是单独的,而是和$一起构成$@,表示目标(注意是整个目标,包括扩展名的),在这里的意思就是smdk2410_config ,s:a=b的意思是把s中的a用b替换,
这样就很清楚了,$(@:_config=)等价于(smdk2410_config:_config=),是要把smdk2410_config转变为smdk2410