Makefile错误在控制台中正常工作

时间:2014-01-26 17:38:42

标签: c makefile

我正在构建一个运行一系列测试的makefile,并将结果添加到文件中。在makefile中,我将其设置为:

runtests:
    rm -f results.txt
    cardtest1 > results.txt
    cardtest2 >> results.txt
    cardtest3 >> results.txt   
    cardtest4 >> results.txt   
    unittest1 >> results.txt    
    unittest2 >> results.txt
    unittest3 >> results.txt
    unittest4 >> results.txt

现在,我能够以此顺序或任何其他顺序运行上述所有命令(前提是存在附加的results.txt文件)没有问题。但是,无论rm -f results.txt在makefile中运行什么测试,都会产生错误。

 flip1 ~/src/dominion-base 161% make all
 rm -f results.txt
 cardtest1 > results1.txt
 make: *** [runtests] Error 1

我一直在修补它一小时(最初全部都是>>但是意识到附加显然不会创建一个不存在的文件),我真的不确定究竟是什么问题我的makefile。

1 个答案:

答案 0 :(得分:3)

错误:

make: *** [runtests] Error 1

表示虽然make正在构建目标runtests,但它运行的其中一个命令退出时出现错误代码1。在POSIX(和make)中,除0以外的任何退出代码都被视为失败;只有0意味着命令成功。

因此make将检查它调用的程序的退出代码(这是它必须继续进行的唯一事情),如果它不是0则假定命令失败,并且它停止构建。

在上面我会说你的程序cardtest1退出时退出代码为1.你可以通过运行(从你的shell命令行)来测试它:

cardtest1
echo $?

因为shell将刚刚完成的程序的退出代码放入shell变量$?。如果它不是0,那么您需要修改cardtest1程序以确保正确设置退出代码。