我有一个看起来像这样的目标:
.PHONY: run-my-test
run-my-test: all
run_test_suite.sh --all --log-to-file
post_process_logs.sh
如果测试用例失败,则run_test_suite.sh
的退出代码将导致Make无法继续运行post_process_logs.sh
。这是一个问题,因为即使是失败的测试,我也想获取处理后的日志。我应该如何更新我的目标?
我已经考虑过以某种方式保存退出代码,并可能在目标定义的末尾退出。还是将通话分为多个目标?
我还可以补充一点,由于我们的构建系统的工作原理,我几乎必须从Make中执行此操作。而且我宁愿不必添加更多目标,因为make文件通常会被这些目标弄得一团糟。
如果您希望构建失败,并且在运行post_process_logs.sh
时失败,请在相同的条目中输入这两个命令。.PHONY: run-my-test
run-my-test: all
run_test_suite.sh --all --log-to-file; e=$$?; post_process_logs.sh; exit $$e
run_test_suite.sh
的退出状态保存在外壳变量e
中,该变量用作exit
之后的post_process_logs.sh
的参数,以设置整个命令的退出状态。