在学习2440开发板的时候会遇到这种写法的makefile文件
sbc2410x_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
scb9328_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
smdk2400_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
100ask24x0_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
```
以smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
为例
```bash
@$(MKCONFIG)中的 @的含义是 不输出该命令行
$(@:_config=) 中 $(@) 的含义就是目标,这里的目标只有一个smdk2410_config,其中
$(@:_config=) 是Makefile中常用的字符串处理方式,意思就是将 smdk2410_config的_config替换为等号后面的‘空’去掉,经过处理之后
$(@:_config=) = smdk2410
说明:
$@ 代表目标
$^ 代表所有的依赖对象
$< 代表第一个依赖对象
若是依赖对象是以 %.o 等的 %类型给出的那么$<代表的是依次给出依赖对象

本文详细解析了2440开发板中特定的Makefile语法,重点介绍了目标处理、变量展开及字符串操作的技巧,适用于嵌入式系统开发者深入理解编译配置过程。
8698

被折叠的 条评论
为什么被折叠?



