make命令退出1

时间:2018-04-03 00:55:04

标签: makefile exit-code

我试图用Make命令抛出错误。这是我的makefile:

exit:
    val=1
    exit $(val)

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

我用错了吗?欣赏它。

1 个答案:

答案 0 :(得分:3)

  1. Makefile target" scripts"不像真正的脚本那样运行,而是每个命令都在一个单独的 shell 中运行。
  2. 您需要使用额外的美元符号来逃避makefile中的美元符号。
  3. 在目标之外声明并使用$(name)引用的makefile变量与shell变量之间存在根本区别,shell变量在目标内声明为命令的一部分,并使用$${name}引用。
  4. 你想要的是一个等同于val=1 && exit $val的单个命令:

    exit:
        val=1 && exit $${val}
    

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

    val = 1
    exit:
        exit $(val)