当前位置: 技术问答>linux和unix
问下大家关于Makefile变量的问题
来源: 互联网 发布时间:2016-09-06
本文导语: 写了一个Makefile文件,在开头部分定义了一个变量。如果想在随后的规则中修改这个变量的内容,不知道能否实现?如果可以的话,应该怎么做,有什么要求和范例么? 自己简单试了下,发现用等号赋值的,不管用。...
写了一个Makefile文件,在开头部分定义了一个变量。如果想在随后的规则中修改这个变量的内容,不知道能否实现?如果可以的话,应该怎么做,有什么要求和范例么?
自己简单试了下,发现用等号赋值的,不管用。
自己简单试了下,发现用等号赋值的,不管用。
|
不行的啦,正如楼主所言
规则里的变量其实是SHELL变量,不过也许楼主的需求可以用其他的方式实现
规则里的变量其实是SHELL变量,不过也许楼主的需求可以用其他的方式实现
VAR = var
DATE = `date $${fmt}`
all:
@VAR=`echo $(VAR)_of_shell`;
echo $(VAR);
echo $${VAR}
@echo $(VAR)
@fmt=`echo "+%Y-%m-%d"`;
echo $(DATE)
|
VAR=`echo $(VAR)_of_shell` 给shell变量VAR赋值
echo $(VAR) 显示Makefile变量VAR
echo $${VAR} 显示shell变量VAR
以上3个语句在一个shell里执行,所以用分号(;) 分隔,反斜杠()为了便于阅读
@表示不回显命令
其实就等价于
VAR=`echo $(VAR)_of_shell`; echo $(VAR); echo $${VAR}
最后两行楼主自己分析一下吧
echo $(VAR) 显示Makefile变量VAR
echo $${VAR} 显示shell变量VAR
以上3个语句在一个shell里执行,所以用分号(;) 分隔,反斜杠()为了便于阅读
@表示不回显命令
其实就等价于
VAR=`echo $(VAR)_of_shell`; echo $(VAR); echo $${VAR}
最后两行楼主自己分析一下吧
|
用类似以下的方法就可以嘛
DATE = `date $${fmt}`
@fmt=`echo "+%Y-%m-%d"`;
echo $(DATE)
@fmt=`echo "+%Y-%m-%d %H:%M:%S"`;
echo $(DATE)
通过改变shell变量,改变了Makefile变量DATE的输出结果, 是不是可以看做Makefile变量呢?