我有一个简单的Makefile,我想在其中一个目标中设置一个变量(这样我就可以在其他目标中使用这个变量)。
我的简单Makefile:
VAR=DEFAULT
import:
echo $@
VAR=$@
echo $(VAR)
运行“make import”时的输出:
echo import
import
VAR=import
echo DEFAULT
DEFAULT
我期待将VAR设置为“导入”,但是发生了什么?我在这里错过了什么吗?任何帮助表示赞赏!感谢。
PS:对不起,如果问题感到愚蠢,尝试谷歌搜索,没有太多时间做RnD! : - |答案 0 :(得分:1)
您无法将值重新分配给已在规则中赋值的变量
在您的情况下:VAR=$@
不会将值import
重新分配给VAR
,因为它在规则列表中完成。
为了实现这一点,您必须在依赖项列表中执行相同的操作,如下所示。
VAR=DEFAULT
#here VAR is assigned with the value import
import: VAR=$@
import:
echo $@
echo $(VAR)