如果软件包含有可选的编译时(compile-time)特征,用户就可以在调用configure时使用命令行选项来指明 是否编译它们。选项采用如下形式之一:

–enable-feature[=arg]
–disable-feature
这些选项允许用户选择可选的选项进行创建和安装。`–enable-feature’选项永远不要使特征的行为 变得不同或者导致一个特征代替另一个特征。它们只应该导致程序的一部分被创建而另一部分不创建。

用户可以通过在特征名之后添加='和参数来给出参数。给出参数no’表示 不能使用该特征。一个带有参数的特征看起来就像--enable-debug=stabs'。如果没有给出参数, 它的缺省值就是yes’。--disable-feature'等价于–enable-feature=no’。

configure脚本并不对它们所不支持的`–enable-feature’选项发出警告。 本特征允许顶层目录中的configure脚本配置一个包含多个包的源代码树。 在包支持不同的选项的时候,不会因为给出了只有一部分包支持的选项而导致不必要的错误消息。 一个不幸的副作用是选项的拼写错误就不能被检查出来了。迄今为止还没有处理该问题的更好办法。

对于每个可选的特征,`configure.in’都应该调用AC_ARG_ENABLE以检测configure 的用户是否要求把该特征包含进来。确定在缺省情况下,每个特征是否被包含进来,以及那些选项是合法的,是你的任务。

宏: AC_ARG_ENABLE (feature, help-string [, action-if-given [, action-if-not-given]])
如果用户以选项--enable-feature'或者–disable-feature’调用 configure,就运行shell命令action-if-given。如果两个选项都没有给出,就运行shell命令 action-if-not-given。名称feature表示可选的用户级功能。它应该仅仅由字母、数字和破折号 (dashes)组成。

shell命令可以通过访问shell变量enableval来得到选项的参数,该变量的值实际上就是把shell变量 enable_feature的值中所有的-'字符替换成‘而得到的。 如果你愿意,可以使用变量enablefeature。help-string参数类似于 AC_ARG_WITH中相应的参数(参见与外部软件一起工作)。

宏: AC_ENABLE (feature, action-if-given [, action-if-not-given])
这是不支持求助字符串的AC_ARG_ENABLE的过时版本。