使用某些选项运行configure时隐藏目标

时间:2013-04-16 18:17:10

标签: makefile configure autotools

我的configure.ac允许用户指定--enable-monitor。在一个子目录中,我有一个Makefile.in,它包含一定数量的目标要构建。我希望其中一些仅在用户指定--enable-monitor

时可用

换句话说,我希望用户只有在make monitor./configure一起运行时才能运行--enable-monitor

我该怎么做?

1 个答案:

答案 0 :(得分:1)

将它放在configure.ac

中就足够了
AC_ARG_ENABLE([monitor],[help string],[use_monitor=yes])
AM_CONDITIONAL([USE_MONITOR],[test "$use_monitor" = yes])

,这在Makefile.am中:

if USE_MONITOR
bin_PROGRAMS = monitor
else
monitor:
    @echo Target not supported >&2 && exit 1
endif

具有显式监视目标的else子句用于覆盖Make可能使用的默认规则。请注意,“帮助字符串”应该更有用并使用AS_HELP_STRING构建,但为简洁起见,省略了这些细节。

- 编辑 -

由于未使用automake,您可以使用以下内容替换configure.ac中的AM_CONDITIONAL行:

AC_SUBST([USE_MONITOR],[$use_monitor])

然后在Makefile.in中进行检查,如:

monitor:
        @if test "@USE_MONITOR@" = yes; then \
            ... ; \
        else \
            echo Target not supported >&2 && exit 1; \
        fi