makefile相关总结

1、@ $

archclean:
          @$(MAKEBOOT)   clean
或者
checkbin:
          @   /bin/ture
          @   true
这里面
@$和@代表着什么意思啊?

 

$(MAKEBOOT)     是变量   MAKEBOOT   的值,
@表示在make时不输出make的信息(类似Windows下的echo   off)。


2、$(@:_config=)

 这里使用了Makefile中的替换引用规则,类似常看到的例子obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.

这里是一样的道理:
 $(@:_config=) 
 
 @代表的是target smdk2410_config,那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410;你可以用echo自己打印出来看看就明白了! 

smdk2410_config : unconfig
  @echo $(@:_config=) # 打印出来看看吧
  @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410NULL s3c24x0 

但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “

all:

   @echo$@   输出是all

   @echo@    输出是@

   @echo $(@) 输出是all

所以我认为符号@在$()中和$@是一样的

2.1. 目标 :依赖

       命令

 命令是否可以直接是一个文件名?

做了个测试证明可以:

在外面建立一个makecfg  里面输入 echo i am here!

在makefile里

all:

   @(路径/makecfg)

 

输入命令makeall

就会输出 i am here!

本段摘自:http://blog.sina.com.cn/s/blog_89fa41ef0100t6bj.html


3、:= ,=,?=的区别

:=不递归赋值
=  递归赋值
?=默认值

 “:=” 的意思是,它右边赋得值如果是变量,只能使用在这条语句之前定义好的,而不能使用本条语句之后定义的变量;
于此对应的是“=”,当它的右边赋值是变量时,这个变量的定义在本条语句之前或之后都可以
而“?=”是指,该符号左边的变量,如果在本条语句之前没有定义过,则执行本语句,如果已经定义,那么本语句什么都不做

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值