在 Makefile 目标中设置变量未按预期工作

Setting the variables in Makefile target not working as expected

我有一个简单的 Makefile,我想在其中一个目标中设置一个变量(以便我可以在其他目标中使用该变量)。

我的简单 Makefile:

VAR=DEFAULT

import:
    echo $@
    VAR=$@
    echo $(VAR)

当我运行"make import"时输出:

echo import
import
VAR=import
echo DEFAULT
DEFAULT

我原以为 VAR 会设置为 "import",但这是怎么回事?我在这里错过了什么吗?任何帮助表示赞赏!谢谢

PS:抱歉,如果这个问题感觉很愚蠢,请尝试谷歌搜索一下,没有太多时间做 RnD! :-|

您不能将值重新分配给已在规则中分配了值的变量。
在您的情况下:VAR=$@ 不会像在规则列表中完成的那样将值 import 重新分配给 VAR
为此,您必须执行与部分依赖项列表相同的操作,如下所示。

VAR=DEFAULT

#here VAR is assigned with the value import
import: VAR=$@ 
import:
    echo $@
    echo $(VAR)