我的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
并且脚本停止。我怎样才能让它继续下去?
答案 0 :(得分:7)
当GNU在section 5.5 "Errors"中生成手动状态时,您可以通过在命令前加-
来忽略命令的返回状态:
diff: *
-diff $(TEST)/T4.board $(TEST)/T4.board
-diff $(TEST)/T4.board $(TEST)/sample.board
答案 1 :(得分:6)
让整个食谱不会返回错误:
diff: *
diff $(TEST)/T4.board $(TEST)/T4.board || exit 0
diff $(TEST)/T4.board $(TEST)/sample.board || exit 0
可以使用echo 'Files differ'
代替exit 0
。