【发布时间】:2017-05-13 20:26:38
【问题描述】:
我有一个用于编译静态库的 makefile。这个 makefile 有一个编译与静态库关联的单元测试套件的规则。编译测试套件后,将调用 python 脚本来运行测试并记录结果。它看起来像这样:
unit:
$(MAKE) -C cXbase/unit
python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG)
我使用 Python 使测试调用可移植。现在,一切正常:测试编译并调用测试运行程序,并在 Linux 和 Windows 中正确记录所有内容。只有当测试失败时,我想停止整个制作过程并返回错误。更准确地说,当单元测试失败(或多次失败)时,我不希望能够make all 或make unit。
如果单元测试失败,Python 脚本会返回特定的退出代码。我希望能够以可移植的方式捕获它,如果该退出代码被捕获,我会失败。
您对如何执行此操作有任何建议吗?我在其他地方找不到任何令人信服或可移植的东西。
谢谢
【问题讨论】:
-
你说的是返回值还是退出码?
-
如果配方中的命令给出非零退出状态,Make 将中止。如果这还不够好,我们必须捕获退出状态在命令中,问题是“便携性如何?”我知道如何捕获和在 bash 中测试它;你对其他贝壳感兴趣吗?
-
@Beta 我希望它在 bash 和 cmd (Windows) 中工作
-
如果退出状态不是特殊值,你想要什么?
-
@Beta 那么
make可以照常进行,所有测试都通过了。
标签: makefile return-value gnu-make