有些软件包需要,或者可选地使用其它已经安装的软件包。用户可以把命令行选项传递给configure 以指明使用那个外部软件。选项采用下列形式之一:

–with-package[=arg]
–without-package
例如,--with-gnu-ld'的意思是使用GNU连接器而不是任何其它连接器。–with-x’的意思是 使用X Window系统。

用户可以给出包名加='加参数的命令行参数。no’是关于包的缺省参数;它表示不使用 包。既不是yes'又不是no’的参数将包含其它包的名字或者版本号,以便更精确地指定本程序可以 与之协同工作的包。如果没有给出参数,--without-package'的缺省参数为yes’。--without-package'等价于–with-package=no’。

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

对于每个可能使用的外部软件包,`configure.in’都应该调用AC_ARG_WITH以检测 configure的用户是否要求使用它。确定在缺省状态下,是使用还是不使用每个包,以及那个参数是合法的, 是你的任务。

宏: AC_ARG_WITH (package, help-string [, action-if-given [, action-if-not-given]])
如果用户以选项--with-package'或者–without-package’调用 configure,就运行shell命令action-if-given。如果两个选项都没有给出,就运行shell命令 action-if-not-given。名字package给出了本程序应该与之协同工作的其它软件包。它应该仅仅由 字母、数字和破折号(dashes)组成。

shell命令action-if-given可以通过shell变量withval得到选项的参数,该变量的值实际上就是把 shell变量with_package的值中的所有-'字符替换为‘而得的。 如果你愿意,可以使用变量withpackage。

参数help-string是对选项的描述,它看起来应该像:

–with-readline support fancy command line editing
如果需要给出更多的细节,help-string可能多于一行。只要确保configure --help'中的列的排列 就可以了。不要在求助字符串中使用tab。你将需要用[‘和`]’包围它以生成前导空格。

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