Makefile错误退出并显示一条消息

时间:2017-05-19 04:42:51

标签: bash shell makefile gnu-make

有没有办法在错误发生时输出错误信息。详细说明,我想知道一个文件内容是否与另一个文件内容相等。如果没有,make应该退出并输出错误信息。

test:
    cmp --silent tmp/test.txt tmp/test_de.txt ||    (error DecryptFile is different from original)

tmp/test.txt不等于tmp/test_de.txt时,输出为:

cmp --silent tmp/test.txt tmp/test_de.txt | (error DecryptFile is different from original)
/bin/sh: 1: error: not found
makefile:38: recipe for target 'test' failed
make: *** [test] Error 127
  

/ bin / sh:1:错误:未找到

结果不是我想要的。我只想要这样的错误信息:

makefile:38: *** missing separator. Stop.

2 个答案:

答案 0 :(得分:3)

您可以使用exit()可以包含多个命令:

cmp --silent tmp/test.txt tmp/test_de.txt || (echo "DecryptFile is different from original"; exit 1)

答案 1 :(得分:3)

也许error引用GNU Make built-in error function,但您应该写$(error .... )而不只是(error .... { {1}}并且你不能那样使用它(在shell命令中)。所以你真的应该使用)echo作为answered by tobatamas。也许您可以将exit重定向到 stderr (例如echoecho message 2>&1

echo message > /dev/stderr .... $(error内置可能(通常是)与GNU make conditionals一起使用。