5.2.1特殊程序检查

这些宏检查特定程序是否存在,以及在某些情况下,它们是否支持某些功能。

宏:AC_PROG_AR公司

设置输出变量应收账到'应收账'如果应收账找到,并且否则为':'(什么也不做)。

宏:AC_程序_工作

检查目瞪口呆莫克导航器、和awk公司,其中订单,并设置输出变量AWK公司找到第一个。它在尝试目瞪口呆首先,据报道这是最佳实施。可以通过设置变量AWK公司或缓存变量交流_交流_编程_工作.

使用此宏足以避免传统的awk公司(请参见常用工具的限制).

宏:AC_PROG_GREP程序

寻找可用的最佳产品格雷普ggrep公司接受可能的最长输入行,并且支持多个-e(电子)选项。设置输出变量GREP公司无论选择什么。请参见常用工具的局限性,有关的详细信息的可移植性问题格雷普命令系列。结果可以通过设置GREP公司变量,并缓存在ac_cv路径GREP变量。

宏:AC_PROG_EGREP公司

检查是否$GREP-E(绿色环保)工作,或寻找可用的最佳方案白鹭格格勒普它接受尽可能长的输入行。设置输出变量EGREP公司无论选择什么。结果可以通过设置EGREP公司变量,并缓存在ac_cv路径_EGREP变量。

宏:AC_PROG_FGREP公司

检查是否$GREP-F美元工作,或寻找可用的最佳方案fgrep公司gfgrep公司其接受尽可能长的输入线。设置输出变量FGREP公司无论选择什么。结果可以通过设置FGREP公司变量,并缓存在交流通道GREP变量。

宏:AC_PROG_安装

设置输出变量安装与BSD兼容的名称安装程序,如果在当前路径.否则,设置安装到'目录/安装-sh-c’,检查指定到的目录AC_CONFIG_AUX_DIR公司(或其默认目录)以确定目录(请参见输出文件). 还设置了变量安装_程序安装_压缩${安装}'和安装数据到'${安装}-m 644’.

@安装@'是特殊的,因为其值可能因不同而不同配置文件。

此宏筛选出以下各项的各种实例安装已知不会工作。对于速度。而不是安装-sh,它还可以使用安装.sh但这个名字已经过时了,因为制作程序有规则创造安装如果没有makefile的话。此外宏需要安装能够将多个文件安装到单个调用中的目标目录。

Autoconf附带了安装-sh你可以使用的。如果您使用AC_PROG_安装,您必须包括安装-sh在里面您的分销;否则自动侦察配置将生成一条错误消息,表示他们找不到它,即使你使用的系统很好安装程序。这张支票是采取安全措施,防止您意外遗漏该文件,这将阻止您的软件包安装在不具有BSD兼容安装程序。

如果您需要使用自己的安装程序,因为它有一些功能在标准中找不到安装程序,没有理由使用AC_PROG_安装; 只需将程序的文件名放入您的生成文件.in文件夹。

可以通过设置变量覆盖测试结果安装或缓存变量ac_cv路径安装.

宏:AC_PROG_MKDIR_P程序

设置输出变量MKDIR_P确保每个参数都存在一个由该参数命名的目录,并将其创建和其父目录(如果需要),并且当程序的两个实例尝试在几乎在同一时间。

此宏使用“mkdir-p'命令。古代的版本mkdir公司容易受到比赛条件的影响,所以如果你希望支持从不同的软件包并行安装到相同的软件包您应该使用非古代目录mkdir公司.

此宏与AS_MKDIR_P宏(请参见M4sh编程),但它设置了一个用于其他文件,而AS_MKDIR_P用于以下脚本中配置。此外,AS_MKDIR_P不接受选项,但是MKDIR_P支持-米选项,例如makefile可能会调用$(MKDIR_P)-m 0目录创建不可访问的目录,相反,makefile应该使用$(MKDIR_P)--美元(FOO)如果FOO公司可能会产生以“”开头的值-’.

可以通过设置变量覆盖测试结果MKDIR_P或缓存变量ac_cv路径_mkdir.

宏:交流_传真 (选项)

搜索词法分析器生成器,首选弯曲到平原法律.输出变量LEX公司设置为任意值程序可用。如果两个程序都不可用,LEX公司设置为':';用于运送生成的文件.yy。c(c)在源头旁边文件。,此默认值允许没有lexer生成器仍然构建包,即使文件。被无意中更改。

可以通过设置输出变量LEX公司或缓存变量交流_编程_导出运行时配置.

如果找到词法分析器生成器,此宏将执行其他检查常见的可移植性缺陷。如果这些附加检查失败,LEX公司重置为“:’; 否则如下还提供了其他宏和变量。

预处理器宏YYTEXT_指针如果lexer默认情况下,骨架声明yytext(yytext)作为字符*而不是一个'字符[]’.

输出变量LEX_输出_根设置为文件的基lexer生成的名称;这通常是其中之一词汇.yy雷克西.

如果生成的lexer需要库才能工作,则输出变量LEXLIB语言被设置为该库的链接选项(例如。,-我),否则设置为空。

这个选项参数修改的行为AC_PROG_LEX公司.它应该是一个以空格分隔的选项列表。目前在那里只有两个选项,它们是互斥的:

yywrap(年包裹)

指示中的库LEXLIB公司需要定义函数yywrap(年包裹)。如果找不到定义此函数的库,LEX公司将重置为“:’.

noyywrap(无包裹)

指示中的库LEXLIB公司不需要定义功能yywrap(年包裹).配置不会在搜索它所有。

在Autoconf 2.70之前,AC_PROG_LEX公司没有接受任何论据,其行为不同于上述任何一种可能性:它将搜索一个定义yywrap(年包裹),并将设置LEXLIB公司如果它找到了一个图书馆。但是,如果库找不到定义此函数的,LEXLIB公司将是留空,并且LEX公司重置。这种行为由于一个bug,但有几个包依赖于它,所以AC_PROG_LEX公司如果两个都没有yywrap(年包裹)也不是noyywrap(无包裹)选项。

的用法AC_PROG_LEX公司而不选择其中一个yywrap(年包裹)noyywrap(无包裹)选项已弃用。通常最好是使用noyywrap(无包裹)并定义yywrap(年包裹)发挥自己的作用,因为这几乎总是使LEXLIB公司没有必要。

注意:作为测试的副作用,此宏可能会删除配置脚本当前工作目录中名为lex.yy(历年)。c(c)雷克西。c(c).

注意:运送生成的词汇yy。c(c)不能假定YYTEXT_指针比赛该文件中的代码。他们也不能假设LEXLIB公司提供该文件中的代码所需的库例程。

如果使用Flex生成lex.yy(历年)。c(c),你可以绕过这些通过定义限制yywrap(yywrap)主要的你自己(渲染-线性调频不必要),并使用--阵列--指针控制方式的选项yytext(yytext)已声明。Flex生成的代码也更多比历史版本的Lex生成的代码更具可移植性。

如果您使用Flex生成lex.yy(历年)。c(c),尤其是如果您的扫描仪依赖于Flex功能,我们建议您使用Autoconf代码段,以防止使用重新生成扫描仪历史Lex:

AC_PROG_LEX公司AS_IF([测试“x$LEX”!=xflex],[LEX=“$SHELL$missing_dir/缺少flex”AC_瑞士([LEX_OUTPUT_ROOT],[LEX.yy])AC_瑞士([LEXLIB],['')])

shell脚本丢失的可以在Automake中找到分配。

请记住,用户可能在LEX公司,因此如果需要Flex,最好检查用户通过分析“”的输出提供了足够的内容$雷克斯--版本“而不是仅仅依靠测试“x$LEX”=xflex.

宏:AC_PROG_LN_S公司

如果'ln-秒'适用于当前文件系统(操作系统和文件系统支持符号链接),设置输出变量LN_S公司到'ln-秒’; 否则,如果'自然对数'作品,套语言(_S)到'自然对数',否则将其设置为'cp-pR’.

如果在当前目录以外的目录中创建链接含义取决于“自然对数'或'ln-秒使用了“”。为了安全使用'创建链接$(LN_S)',要么找出使用的表单并调整参数,或始终调用自然对数在目录中要创建链接的位置。

换句话说,这样做是行不通的:

$(LN_S)foo/x/bar

相反,请执行以下操作:

(cd/x&&$(LN_S)foo栏)
宏:AC_PROG_RANLIB公司

设置输出变量兰利(RANLIB)到'兰利布'如果兰利布找到,否则为':'(什么也不做)。

宏:AC_PROG_SED公司

设置输出变量SED公司符合以下条件的Sed实现Posix和没有任意长度限制。如果没有,则报告错误找到可接受的Sed。请参见常用工具的局限性,了解更多有关Sed可移植性问题的信息。

可以通过设置SED公司变量并缓存在ac_cv_path路径变量。

宏:AC_PROG_YACC公司

如果野牛找到,设置输出变量扬子乙酰氯到'野牛-年’. 否则,如果比亚克找到,设置扬子乙酰氯比亚克’. 否则设置扬子乙酰氯到'雅加达航空公司’.此测试的结果可能会受到设置变量的影响扬子乙酰氯或缓存变量交流_断路器_程序_ YACC.