比较makefile中的两个文件

Lib*_*tal 2 compare makefile

我需要比较makefile中的两个文件的帮助。我需要这样的东西:

if [cmp $(FILE1) $(FILE2)] !=0; than 
 echo "OK" 
else 
 echo "WRONG" 
fi
Run Code Online (Sandbox Code Playgroud)

但我不确定该怎么做,谢谢

e.d*_*dan 6

编辑:更正了-z对To的错误使用,-eq 0并添加了Makefile上下文帮助。

这实际上是一个shell问题,不特定于makefile,但是此代码可以正常工作:

cmp -s $(FILE1) $(FILE2)
RETVAL=$?
if [ $RETVAL -eq 0 ]; then 
    echo "SAME" 
else 
    echo "NOT SAME" 
fi
Run Code Online (Sandbox Code Playgroud)

在makefile规则中,看起来像:

my_compare:
    cmp -s $(FILE1) $(FILE2); \
    RETVAL=$$?; \
    if [ $$RETVAL -eq 0 ]; then \
            echo "SAME"; \
    else \
            echo "NOT SAME"; \
    fi
Run Code Online (Sandbox Code Playgroud)

  • @Jack-我同意将cmp放在if本身中-好点。但是我从经验中学到了总是将外壳程序命令的退出状态保存在名为“ RETVAL”的东西中,因为它避免了下一个程序员出现时将那些棘手的错误并放置在其他命令之间,而没有意识到`if`确实与最后运行的命令。立即将其放在变量中会使这一点更加明显(我认为),并使它更具可维护性。 (2认同)