我可能需要添加很多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
答案 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_IF
,yes/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,我只是错过了一个替换贴在这里)我可以为简单的启用工作我希望只有yes
或no
的选项,其中包含默认值和错误消息:
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])