【问题标题】:Setting the variables in Makefile target not working as expected在 Makefile 目标中设置变量未按预期工作
【发布时间】:2015-05-25 10:45:46
【问题描述】:

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

我的简单 Makefile:

VAR=DEFAULT

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

运行“make import”时的输出:

echo import
import
VAR=import
echo DEFAULT
DEFAULT

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

PS:对不起,如果这个问题感觉很愚蠢,试着用谷歌搜索一下,没有太多时间做 RnD! :-|

【问题讨论】:

    标签: variables makefile gnu-make


    【解决方案1】:

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

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

    【讨论】:

    • 它在给定的上下文中工作,但我无法在 makefile 的其他目标中使用相同的变量,我有一个解决方法。不管怎么说,还是要谢谢你! :)
    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多