添加条件目标以自动生成所有并安装目标
Posted
技术标签:
【中文标题】添加条件目标以自动生成所有并安装目标【英文标题】:Adding conditional targets to automake all and install targets 【发布时间】:2020-10-08 16:23:50 【问题描述】:我有一个条件子句,AM_CONDITIONAL
,说明是否应该构建一个可选组件(带有自己的 Makefile)。
因此,我在父 Makefile.am
中添加了以下语句。
if CAN_DOCS
docs: ; $(MAKE) -C ./docs all
endif
如果我可以以某种方式覆盖make all
目标以将先决条件添加到docs
并覆盖make install
依次以相同的方式调用$(MAKE) -C ./docs install
,那就太好了(而且更便携) .
有没有办法做到这一点?
【问题讨论】:
【参考方案1】:至少有两种可用的方法。
有条件地附加到SUBDIRS
变量以挂钩Automake's recursive make
capabilities:
SUBDIRS =
if CAN_DOCS
SUBDIRS += docs
endif
子目录只需要一个Makefile
(配置后),根本不需要任何自动工具。但是,在这种情况下,*** make
将尝试递归到 all 其递归目标的子目录。如果子目录的 makefile 不支持所有这些,这可能会产生不必要的副作用。 Automake手册提供a list。
使用*-local
and / or *-hook
targets 将您的自定义规则连接到标准目标。我认为您应该能够将此类目标放入条件块中,但如果这不起作用,那么您绝对可以通过-local
和-hook
目标的先决条件列表的内容来实现所需的条件。示例:
if CAN_DOCS
all-local:
$(MAKE) -C ./docs all
endif
【讨论】:
以上是关于添加条件目标以自动生成所有并安装目标的主要内容,如果未能解决你的问题,请参考以下文章