在不同文件上使用 diff 时 Makefile 失败

问题描述 投票:0回答:2

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

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

makefile diff termination
2个回答
7
投票

由于 GNU 在 5.5 节“错误” 中手动声明,您可以通过在命令前加上

-
:

来忽略命令的返回状态
diff:   *
    -diff $(TEST)/T4.board $(TEST)/T4.board
    -diff $(TEST)/T4.board $(TEST)/sample.board

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

© www.soinside.com 2019 - 2024. All rights reserved.