【发布时间】:2017-10-12 08:20:08
【问题描述】:
我知道我可以使用AC_CHECK_DECL / AC_CHECK_DECLS 来检查一组标头是否提供了对指定标识符的声明,但是如何不仅检查是否声明了宏,而且检查其扩展是否符合我的标准?具体来说,我想检查一下numa.h是否包含与此等价的宏定义...
#define LIBNUMA_API_VERSION 2
...包括特定值“2”。
更新:
<numa.h> 标头包含一个定义,例如 #define LIBNUMA_API_VERSION 2 来声明它的版本。使用此标头的 C 代码通常像这样使用它:
#if defined(LIBNUMA_API_VERSION) && LIBNUMA_API_VERSION >= 2
....
#endif
我想用autoconf 确定NUMA 标头版本,并定义一个简洁地传达是否提供NUMA 版本2 的宏。即:
if test "$have_numa_v2" = "yes" ; then
AC_DEFINE(NUMA_VERSION_2, 1, [Determine whether NUMA v2 available)
fi
可以这样使用:
#ifdef NUMA_VERSION_2
....
#endif
有可能吗?我无法确定如何在我的 Autoconf 文件中设置变量 have_numa_v2 变量的值。
【问题讨论】:
-
从哪里检查?从makefile?外壳脚本? C 代码?
-
OP 来自 numa.h
-
据我了解,这个定义是 numa.h 的一部分。但也许不是。
-
@dbrank0 啊你是对的:)
-
也许
AC_CHECK_HEADER()和AC_DEFINE()的组合可以满足您的需求。