设置Makefile目标中的变量不按预期工作

时间:2015-05-25 10:45:46

标签: variables makefile gnu-make

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

我的简单Makefile:

VAR=DEFAULT

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

运行“make import”时的输出:

echo import
import
VAR=import
echo DEFAULT
DEFAULT

我期待将VAR设置为“导入”,但是发生了什么?我在这里错过了什么吗?任何帮助表示赞赏!感谢。

PS:对不起,如果问题感到愚蠢,尝试谷歌搜索,没有太多时间做RnD! : - |

1 个答案:

答案 0 :(得分:1)

您无法将值重新分配给已在规则中赋值的变量 在您的情况下:VAR=$@不会将值import重新分配给VAR,因为它在规则列表中完成。
为了实现这一点,您必须在依赖项列表中执行相同的操作,如下所示。

VAR=DEFAULT

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