我的 C++ 项目的 makefile 的一部分使用 diff 命令来比较最近构建的代码输出的两个文件。问题是如果文件不同,脚本应该不会失败并且应该继续。还有更多文件需要比较,我需要在构建脚本结束之前查看所有文件。比如像这样的,
diff: *
diff $(TEST)/T4.board $(TEST)/T4.board
diff $(TEST)/T4.board $(TEST)/sample.board
第一行没有问题,因为文件是一样的。第二行比较不同的文件,一旦显示差异,我明白了
Makefile:102: recipe for target `diff' failed
make: *** [diff] Error 1
脚本停止。我怎样才能让它继续?
由于 GNU 在 5.5 节“错误” 中手动声明,您可以通过在命令前加上
-
: 来忽略命令的返回状态
diff: *
-diff $(TEST)/T4.board $(TEST)/T4.board
-diff $(TEST)/T4.board $(TEST)/sample.board
让你的整个食谱不返回错误:
diff: *
diff $(TEST)/T4.board $(TEST)/T4.board || exit 0
diff $(TEST)/T4.board $(TEST)/sample.board || exit 0
一个人可以使用
echo 'Files differ'
代替exit 0
。