2012-03-06 356 views
2

是否可以在'make install'之前执行'make check'并在检查失败时中止安装?如果在自动工具中执行'make install',自动运行'make check'

行为应该是这样的:

  1. 用户运行 'make install的'
  2. '做检查' 运行。
  3. 如果检查失败,则不执行安装。否则会执行安装。

编辑:

我把它通过覆盖在顶层Makefile.am这样的安装工作规则:

install: check install-recursive 

但我宁愿不覆盖的解决方案安装目标。

+3

这是可能的,但你为什么要这么做?如果用户想要快速安装,或者出于任何原因不想运行测试套件,则应该允许用户做出该选择。如果你想在写入一个图章文件的检查目标上挂钩,然后在'make install'期间发出一个警告来表明测试套件还没有运行,那很好,但你不应该选择来自用户。 – 2012-03-06 13:53:13

+0

@WilliamPursell,我非常同意。如果“角落案例”测试失败或用户不关心的功能测试失败,用户将无法安装。我甚至有'make check'失败,仅仅是因为像sed这样的工具如何在不同类型的Unix上安排(正确的)测试输出的细微差别。 – ldav1s 2012-03-07 00:44:14

回答

3

您可以挂接到使用install-exec-localinstall-data-local目标的安装过程:

install-exec-local: check 
+0

如果我使用exec-local,则测试在安装过程中间的某处运行。 – 2012-03-06 14:22:18

+0

然后唯一的方法是覆盖安装目标。 – ptomato 2012-03-06 14:50:48