即使在 If 块中,Makefile 也会抛出错误
Makefile Throws Error Even When In If Block
我有一个验证函数,我想在验证失败时抛出错误。这是我使用的代码:
define validate
if [ condition... ]; then \
echo "ERROR"; \
$(error Validation failed); \
fi; \
echo "NOERROR";
endef
我遇到的问题是,即使条件为假,错误仍然会被抛出。当我删除错误和 运行 函数时,我可以看到 echo 'ERROR' 没有显示。
为什么会这样?
那是因为 $(error)
是一个 make
函数,并且在将所有此语句传递给 shell 之前对其进行评估。如果您想从 shell 开始失败,只需使用 exit 1
即可。
我有一个验证函数,我想在验证失败时抛出错误。这是我使用的代码:
define validate
if [ condition... ]; then \
echo "ERROR"; \
$(error Validation failed); \
fi; \
echo "NOERROR";
endef
我遇到的问题是,即使条件为假,错误仍然会被抛出。当我删除错误和 运行 函数时,我可以看到 echo 'ERROR' 没有显示。
为什么会这样?
那是因为 $(error)
是一个 make
函数,并且在将所有此语句传递给 shell 之前对其进行评估。如果您想从 shell 开始失败,只需使用 exit 1
即可。