4.9配置头文件

当一个包包含多个定义C预处理器的测试时符号,要传递的命令行-D类编译器选项可能会持续很长时间。这导致了两个问题。一个是制作输出很难直观地扫描错误。更多严肃地说,命令行可能超过某些命令行的长度限制操作系统。作为超车的替代方案-D类选项到编译器,配置脚本可以创建C头文件包含'#定义'指令。这个AC_配置_标题宏选择这种输出。尽管它可以在任何地方调用之间空调初始化交流输出,习惯上打电话就在之后空调初始化.

该包应“#包括'之前的配置头文件任何其他头文件,以防止声明中的不一致(对于例如,如果它重新定义常数,或者如果它定义了一个类似于_文件_偏移量_比特影响系统行为标题)。请注意,可以只包括配置。小时.c类文件夹;项目的.小时文件可以依赖配置。小时已经被相应的.c类文件。

要提供VPATH构建,请记住向C编译器传递一个-一、。选项(或-一、。。; 无论哪个目录包含配置。小时).即使您使用“#包括“config.h”',预处理器仅搜索当前读取文件的目录,即源目录,而不是构建目录。

使用适当的-我选项,您可以使用#包括<config.h>’. 实际上,使用它是一个好习惯,因为在极少数情况下,当源目录包含另一个配置。小时,应首先搜索生成目录。

宏:AC_配置_标题 (收割台…,[指挥与数据系统],[初始化cmds])

这个宏是一个实例化宏;看见执行配置操作.品牌交流输出在中创建文件空白或新行分隔列表收割台包含C预处理器#定义语句,并替换“@DEFS公司@'已生成使用的文件-DHAVE_CONFIG_H而不是的值DEFS公司.的常用名称收割台配置。小时;收割台不应包含shell元字符。请参阅输出变量中的特殊字符.

如果收割台已经存在,其内容与交流输出如果把它放进去,它就不会动了。这样做可以在配置中进行一些更改,而不会造成不必要的依赖于要重新编译的头文件的对象文件。

通常将输入文件命名为收割台.英寸; 然而,您可以通过附加到来覆盖输入文件名收割台以冒号分隔的输入文件列表。例如,您可能需要DOS变体可接受的输入文件名:

AC_CONFIG_HEADERS([CONFIG.h:CONFIG.hin])
宏:AH_头

此宏被定义为第一个声明的配置头的名称如果到目前为止还没有声明配置头,则为undefined。例如,第三方宏可能需要使用配置头不调用AC_CONFIG_HEADERS两次,如下所示:

AC_CONFIG_COMMANDS_PRE公司([m4_ifndef([AH_HEADER],[AC_CONFIG_HEADER([CONFIG.h])])

请参阅执行配置操作,有关的详细信息收割台.