7

我的 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

脚本停止。我怎样才能让它继续?

4

2 回答 2

7

正如 GNU 在第 5.5 节“错误”中制作手册所述,您可以通过在命令前面加上 : 来忽略命令的返回状态-

diff:   *
    -diff $(TEST)/T4.board $(TEST)/T4.board
    -diff $(TEST)/T4.board $(TEST)/sample.board
于 2012-03-11T18:59:21.577 回答
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.

于 2012-03-11T18:03:23.240 回答