有 make 命令退出 1

Posted

技术标签:

【中文标题】有 make 命令退出 1【英文标题】:Have make command exit 1 【发布时间】:2018-04-03 00:55:03 【问题描述】:

我正在尝试使用 Make 命令引发错误。这是我的makefile:

exit:
    val=1
    exit $(val)

但是,当我运行 make exit && echo $? 时,它给了我退出代码 0。我期待退出代码 1。

我用错了吗?欣赏它。

【问题讨论】:

【参考方案1】:
    Makefile 目标“脚本”不像真正的脚本那样运行,而是在单独的 shell 中运行每个命令。 您需要使用额外的美元符号来转义 makefile 中的美元符号。 在目标外部声明并使用$(name) 引用的makefile 变量与在目标内部声明为命令的一部分并使用$$name 引用的shell 变量之间存在根本区别。

你想要的是一个等同于val=1 && exit $val的命令:

exit:
    val=1 && exit $$val

或在简单命令中使用的 makefile 变量:

val = 1
exit:
    exit $(val)

【讨论】:

如果我使用 makefile 变量,我可以在出口内重新分配/更新它吗? 例如:val=0 exit: val=1 exit $(val) 混合 makefile 和 shell 变量是个坏主意,而且可能不会像您期望的那样工作。但是,如果您愿意,请尝试一下。您可能希望将生成的 makefile 发布到 Code Review 以获得一些反馈。

以上是关于有 make 命令退出 1的主要内容,如果未能解决你的问题,请参考以下文章

Makefile入门(八):make运行

make执行过程

Makefile-make的运行

安装redis时,make命令报错

在Make中,如何使配方仅在特定的退出代码上失败?

如何调试makefile