C++ 自动运行';进行检查';如果';进行安装';在自动工具中执行

C++ 自动运行';进行检查';如果';进行安装';在自动工具中执行,c++,autotools,C++,Autotools,是否可以在“进行安装”之前执行“进行检查”,并在检查失败时中止安装 行为应该是这样的: install: check install-recursive 用户运行“make install” 运行“进行检查” 如果检查失败,则不执行安装。否则将执行安装 编辑: 我通过覆盖顶级Makefile中的安装规则使其正常工作。我的做法如下: install: check install-recursive 但是我希望有一个不覆盖安装目标的解决方案。您可以使用install exec local或ins

是否可以在“进行安装”之前执行“进行检查”,并在检查失败时中止安装

行为应该是这样的:

install: check install-recursive
  • 用户运行“make install”
  • 运行“进行检查”
  • 如果检查失败,则不执行安装。否则将执行安装
  • 编辑:

    我通过覆盖顶级Makefile中的安装规则使其正常工作。我的做法如下:

    install: check install-recursive
    

    但是我希望有一个不覆盖安装目标的解决方案。

    您可以使用
    install exec local
    install data local
    目标钩住安装过程:

    install-exec-local: check
    

    这是可能的,但你为什么要这么做?如果用户希望快速安装,或者出于任何原因不想运行测试套件,则应允许用户进行选择。如果您想在写入戳记文件的检查目标上设置一个钩子,然后在“make install”期间发出警告,表明测试套件尚未运行,这很好,但您不应该剥夺用户的选择权。@williampersell,我非常同意。如果“角落案例”测试失败,或者用户不关心的功能测试失败,则用户无法安装。我甚至有过<代码>使检查< /代码> s失败,这只是因为工具的不同之处,如“代码> SED在不同的UNIX版本上安排(正确的)测试输出。如果我使用Exchange本地,则测试在安装过程中间运行。然后,唯一的方法是重写安装目标。