如果文件丢失,如何强制错误?

时间:2017-05-15 12:14:27

标签: shell makefile gnu-make

如果文件myFile不存在,那么makefile的片段应该停止执行:

 test:
        if [ -e myFile ] ; then \
            echo "Error Message"; \
        fi;

如果我用$(error: Error Message); \替换echo-statement,则在两种情况下都会停止make文件。但是如果文件存在,我需要停止makefile。

1 个答案:

答案 0 :(得分:1)

$(error )由make本身解释,因此如果在读取文件时遇到它,则会产生错误。如果在执行配方期间需要错误,则必须运行返回错误退出代码的命令。大多数直截了当的是false,例如

 test:
        if [ -e myFile ] ; then \
            echo "Error Message"; false; \
        fi;

当然,您可以使用$(shell )检查文件,而无需配方:

ifeq ($(shell test -e myFile && echo yes),)
    $(error Error Message)
endif