6.2.3发电源
Autoconf提供了一组可用于生成测试的宏源文件。它们被写成通用语言,即实际上取决于当前语言(请参见语言选择)至正确“格式化”输出。
- 宏:AC_范围_测试 (来源)¶
-
保存来源当前测试源文件中的文本:conftest公司。延伸其中延伸取决于当前语言。自Autoconf 2.63b起,源文件还包含所有的结果AC_定义
迄今为止已完成。
请注意来源只计算一次,就像常规Autoconf宏参数,因此(i)可以传递宏调用,(ii)如果没有,请确保在需要时双引号。
这个来源文本展开为未引用的here-document,因此‘$’, ‘`“还有一些”\的应该是反斜杠。请参见此处-文档.
此宏在自动配置文件
处理,如果来源不包括宏的展开AC_范围_定义_提供
(请注意AC_LANG_来源
和AC_范围_程序
调用此宏,从而避免出现警告)。
此宏很少直接调用,但更多人在幕后使用常见宏,如AC_COMPILE_IFELSE公司
和AC_RUN_IFELSE公司
.
- 宏:AC_范围_定义_提供¶
-
调用此宏作为文件conftest公司。延伸适用于当前语言的是完成,包括之前确定的所有结果AC_定义
。此宏很少被直接调用,但如果您有充分的理由编写conftest文件而不使用AC_LANG_来源
,但仍希望避免出现来自AC_范围_测试
.
- 宏:AC_LANG_来源 (来源)¶
-
扩展到来源,定义为所有的AC_定义
迄今为止已完成。此宏包含一个扩展提供AC_LANG_define_PROVIDED
.
在许多情况下,您可能会发现使用包装器更方便AC_范围_程序
.
例如,执行(注意双引号!):
AC_INIT([你好],[1.0][bug-hello@example.org], [],[https://www.example.org/])AC_DEFINE([HELLO_WORLD],[“你好,世界”],[问候语字符串。])AC_LANG([C])AC_范围_测试([AC_LANG_SOURCE([[const char hw[]=“你好,世界\n”;]])])gcc-E-dD测试。c(c)
在具有的系统上海湾合作委员会
已安装,结果是:
…#1“conftest.c”#定义PACKAGE_NAME“你好”#定义PACKAGE_TARNAME“hello”#定义PACKAGE_VERSION“1.0”#定义PACKAGE_STRING“Hello 1.0”#定义PACKAGE_BUGREPORT“bug-hello@example.org"#定义PACKAGE_URL“https://www.example.org/"#define HELLO_WORLD“你好,世界\n”const char hw[]=“你好,世界\n”;
当测试语言为Fortran、Erlang或Go时AC_定义
定义不会自动转换为此宏的源代码。
- 宏:AC_范围_程序 (开场白,身体)¶
-
展开为包含开场白、和然后身体作为主要功能的主体(例如。,主要的
在里面C) ●●●●。因为它使用AC_LANG_来源
,后者的特点是可用。
例如:
AC_INIT([你好]、[1.0]、[bug-hello@example.org], [],[https://www.example.org/])AC_DEFINE([HELLO_WORLD],[“你好,世界”],[问候语字符串。])AC_范围_测试([AC_LANG_PROGRAM([[const char hw[]=“你好,世界”;]],[[fputs(硬件,标准输出);]]))gcc-E-dD测试。c(c)
在具有的系统上海湾合作委员会
已安装,结果是:
…#1“conftest.c”#定义PACKAGE_NAME“你好”#定义PACKAGE_TARNAME“hello”#定义PACKAGE_VERSION“1.0”#定义PACKAGE_STRING“Hello 1.0”#定义PACKAGE_BUGREPORT“bug-hello@example.org"#定义PACKAGE_URL“https://www.example.org/"#define HELLO_WORLD“你好,世界\n”const char hw[]=“你好,世界\n”;整数主要(无效){fputs(硬件,标准输出);;返回0;}
在Erlang测试中,创建的源文件是一个名为一致性检验
(conftest.erl公司)。此模块定义和导出至少一开始/0
函数,该函数被调用以执行测试。这个开场白是插入模块头和之间的可选代码这个开始/0
函数定义。身体是的主体开始/0
没有最后一个句点的函数(请参见检查运行时行为,关于对该函数行为的约束)。
例如:
AC_INIT([你好],[1.0][bug-hello@example.org])AC_LANG(爱尔兰语)AC_范围_测试([AC_LANG_PROGRAM([[-define(HELLO_WORLD,“你好,世界!”).]],[[io:format(“~s~n”,[?HELLO_WORLD])]]))猫conftest.erl
结果如下:
-模块(conftest)。-导出([start/0])。-define(HELLO_WORLD,“你好,世界!”)。启动()->io:格式(“~s~n”,[?HELLO_WORLD]).
- 宏:AC_范围_呼叫 (开场白,功能)¶
-
展开为包含开场白、和然后打电话给功能作为主要功能的主体(例如。,主要的
在C)中。因为它使用AC_范围_程序
,功能后者的可用。
此功能将来可能会被替换为一个版本这将允许指定参数。此宏的用法是不鼓励,因为这严重违反了打字系统。
此宏不能用于Erlang测试。
- 宏:AC_LANG_FUNC_LINK_TRY公司 (功能)¶
-
展开为使用功能在的主体中主要功能(例如。,主要的
在C)中。因为它使用AC_范围_程序
,后者的功能可用。
作为AC_范围_呼叫
,此宏仅为完整性而记录。它被认为是严重损坏的,而且在未来删除以支持实际的函数调用(使用正确键入的参数)。
此宏不能用于Erlang测试。