添加条件目标以自动制作所有目标并安装目标

问题描述

我有一个条件AM_CONDITIONAL子句,该子句指出是否应构建一个可选组件(具有其自己的Makefile)。

因此,我在父Makefile.am中添加了以下语句。

if CAN_DOCS
docs: ; $(MAKE) -C ./docs all
endif

如果我可以通过某种方式覆盖make all目标,以便向docs添加一个前提条件,并依次覆盖make install来调用{ {1}}。

有办法吗?

解决方法

至少有两种可用的方法。

  1. 有条件地附加到SUBDIRS变量以钩住Automake's recursive make capabilities

    SUBDIRS =
    if CAN_DOCS
    SUBDIRS += docs
    endif
    

    子目录仅需要具有Makefile(在配置后),而根本不需要任何自动工具。但是,在这种情况下,顶级make将尝试递归到 all 其递归目标的子目录中。如果子目录的makefile不支持所有这些副作用,则可能会产生有害的副作用。 Automake手册提供了a list

  2. 使用*-local and / or *-hook targets将自定义规则连接到标准目标。我认为,您应该能够将这些目标放入条件块中,但是,如果那行不通,那么您可以通过-local-hook目标先决条件列表的内容来实现所需的条件。示例:

    if CAN_DOCS
    all-local:
            $(MAKE) -C ./docs all
    endif
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...