这个问题通常出现在使用了多个 AC_ARG_VAR 或 AC_ARG_ENABLE 的情况下,这可能导致 @<:@具体选项@:>@ 已经在前面的某个地方被定义过了。例如:
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug], [Enable debug mode])])
AC_ARG_VAR([CC], [C compiler])
AC_ARG_VAR([CC], [C compiler path])
这里的第二个 AC_ARG_VAR 宏将 CC 定义为可变参数,但是第三个 AC_ARG_VAR 宏重复定义了 CC,这会导致该错误。
为了解决这个问题,您可以改为使用 AC_ARG_WITH 宏来避免重复定义选项:
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug], [Enable debug mode])])
AC_ARG_WITH([cc], [AS_HELP_STRING([--with-cc=PATH], [Path to C Compiler])])
或者是将它们合并在一起:
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug], [Enable debug mode])])
AC_ARG_VAR([CC], [C compiler])
AC_ARG_WITH([cc], [AS_HELP_STRING([--with-cc=PATH], [Path to C Compiler])])
这样,您就可以正确地使用 AC_ARG_VAR 宏来定义变量了。