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)变量名大小写敏感 -
变量的定义和使用:
因此,将上面例子使用变量修改为: