即使在 If 块中,Makefile 也会抛出错误

时间:2021-01-18 09:30:04

标签: bash makefile gnu-make gnu

我有一个验证函数,我想在验证失败时抛出错误。这是我使用的代码:

define validate
    if [ condition... ]; then \
        echo "ERROR"; \
        $(error Validation failed); \
    fi; \
    echo "NOERROR";
endef

我遇到的问题是,即使条件为假,错误仍然会被抛出。当我删除错误并运行该函数时,我可以看到没有显示回声“错误”。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

那是因为 $(error) 是一个 make 函数,并且在将所有此语句传递给 shell 之前对其进行评估。如果您想从 shell 失败,只需使用 exit 1

相关问题