在 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)
我有一个简单的 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)