我希望在configure.ac中有一个名为“stdout”的配置选项,这会导致将变量定义为“1”或“0”。以下是我在configure.ac中的内容:
AC_ARG_ENABLE([stdout],
[AS_HELP_STRING([--enable-stdout[=yes/no], --disable-stdout],
[Enable or disable output to stdout. Default is disabled.])],
[ if test "x$enableval" = "yes" ; then
AC_DEFINE([WRITETOSTDOUT],[1],[Enable output to stdout])
else
AC_DEFINE([WRITETOSTDOUT],[0],[Disable output to stdout])
fi ],
[AC_DEFINE([WRITETOSTDOUT],[0],[Enable output to stdout])])
我希望当我添加configure
选项--enable-stdout
或--enable-stdout=yes
时,我会收到#define WRITETOSTDOUT 1
,当我添加--disable-stdout
或{ {1}},我得到--enable-stdout=no
按预期工作, #define WRITETOSTDOUT 0
(不含参数)会导致--enable-stdout
另一个观察结果是当我输入#define WRITETOSTDOUT 0
并按下它时会竞争configure --enable-std
如何让简单的enable-option工作?
答案 0 :(得分:1)
秘诀是你应该为enable_
foo 或--enable-
foo命名你的shell变量--disable-
foo 。所以:
AC_ARG_ENABLE([stdout],
[AS_HELP_STRING([--enable-stdout=yes|no],
[Enable or disable output to stdout. Default is disabled.])],
[enable_stdout="$enableval"],
[enable_stdout="no"])
...
stdout_val=0
if test "x$enable_stdout" = "xyes" ; then
stdout_val=1
fi
AC_DEFINE_UNQUOTED([WRITETOSTDOUT],[$stdout_val],[Enable output to stdout])
Autotools Mythbuster页面有一些例子。