makefile中一些操作符 = += := ?=的含义

1、“=”的作用

输出:

解释:
当执行make命令后makefile中变量展开;原本应该如此 x=foo; y=fool bar; x =xyz;但实际是展开时x为 xyz, "="寻找的是变量最终的值;y=$(x) bar 就变成了 xyz bar,x最终为 xyz 

2、“:=”的作用

输出:

小技巧:可以看到在上面的命令前加上了@ ,作为命令无回显,即执行的命令不打印出来,只打印它的执行结果。 

解释:
":="的作用域取决于 当前变量解析时所处的位置替换,并不去最终的值;因此当解析到y :=$(x) bar时,x的值为foo 替换后就是 fool bar

 3、“?=”和“+=”的作用

输出:

解释:

"?="是做了个判断,如果该变量已经有了值则不对它进行再次 赋值覆盖,如果没有值则进行赋值; "+="就相当于 java中字符串 连接 string A += B,A就是 A+B的内容

 下面来一个makefile的例子:

 func.c

#include "stdio.h"

void foo()
{
    printf("void foo() : hello makefile\n");
}

main.c

extern void foo();

int main()
{
    foo();

    return 0;
}

Makefile

 

3. Makefile 的变量

  • makefile中支持程序设计语言中变量的概念
  • makefile中的变量只代表文本数据(字符串)
  • makefile中的变量名规则:
    1)变量名可以包含字符数字下划线
    2)不能包含":", "#", "=", " "
    3)变量名大小写敏感
  • 变量的定义和使用:

因此,将上面例子使用变量修改为:

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值