autotools是AC_ARG_ENABLE action-if-given的缩写

时间:2015-08-19 10:15:10

标签: autotools autoconf automake

我可能需要添加很多AC_ARG_ENABLE,目前我正在使用下面的语法,这是我唯一的工作,但我想知道是否已经有一些 m4 宏用于简单的 action-if-given 测试,因为我正在使用(我做了一些搜索,但还没有找到)或更清晰的语法。

我已经看到了一些空的[]示例,但是无法让它工作,我是否需要创建一个新的宏?

AC_ARG_ENABLE([welcome],
    AS_HELP_STRING([--enable-welcome], [Enable welcome route example @<:@default=yes@:>@]),
    [case "${enableval}" in
        yes) enable_welcome=true ;;
        no)  enable_welcome=false ;;
        *) AC_MSG_ERROR([bad value ${enableval} for --enable-welcome]) ;;
     esac],[enable_welcome=true])
AM_CONDITIONAL([ENABLE_WELCOME], [test x$enable_welcome = xtrue])

这里我是如何在Makefile.am

上使用它的
if ENABLE_WELCOME
...
endif

2 个答案:

答案 0 :(得分:3)

我只是将AC_ARG_ENABLE与处理选项本身分开,将选项处理逻辑分开,并使AC_ARG_ENABLE([welcome], [AS_HELP_STRING([--enable-welcome], [... description ... ])],, [enable_welcome=yes]) # i.e., omit '[<action-if-given>]', still sets '$enable_welcome' enable_welcome=`echo $enable_welcome` # strip whitespace trick. case $enable_welcome in yes | no) ;; # only acceptable options. *) AC_MSG_ERROR([unknown option '$enable_welcome' for --enable-welcome]) ;; esac # ... other options that may affect $enable_welcome value ... AM_CONDITIONAL([ENABLE_WELCOME], [test x$enable_welcome = xyes]) 易于阅读:

autoconf

当然,AS_CASE promotes使用便携式shell结构,例如AS_IFyes/no等等。可能正确的事情&#34;要做,但我发现语法很烦人。如果我受到shell限制的困扰,我想我必须考虑它们。

如果此AC_DEFUN构造经常出现,您可以使用m4定义自己的函数,这需要一些最小var log = new LoggerConfiguration().WriteTo.RollingFile( @"F:\logs\log-{Date}.txt", LogEventLevel.Debug).CreateLogger(); log.Information("this is a log test"); 个概念。但是你应该能够找到很多关于如何访问函数参数和返回值的例子。

答案 1 :(得分:2)

我更深入地研究了这个问题,目前下面的语法最干净,最紧凑,冗余度更低(仍然太多IMO,我只是错过了一个替换贴在这里)我可以为简单的启用工作我希望只有yesno的选项,其中包含默认值和错误消息:

AC_ARG_ENABLE([form-helper],
    AS_HELP_STRING([--enable-form-helper], [Enable Form helper @<:@default=yes@:>@]),
    [AS_CASE(${enableval}, [yes], [], [no], [],
             [AC_MSG_ERROR([bad value ${enableval} for --enable-form-helper])])],
    [enable_form_helper=yes])
AM_CONDITIONAL([ENABLE_FORM_HELPER], [test x$enable_form_helper = xyes])