GNU Autotools - 如何处理必需但可能缺少的标题?

时间:2013-02-16 07:48:14

标签: c autotools

我想知道使用GNU Autotools处理所需标头的最佳实践解决方案。这是我configure.ac

中的一行
AC_CHECK_HEADERS_ONCE(argp.h)

如果系统中缺少argp.h,那么configure将只是宣告

...
checking for argp.h... no
...

但对此无动于衷。当然,程序将无法编译,因为预期的标头不存在,并且在#ifdef HAVE_ARGP_H指令中包含include,并且可能添加#else #error [...]结构将做我想要的,但它似乎相当乏味的。

是否有一种很好的方法可以在配置时间错误输出缺少但需要的标题而不是编译时间?

谢谢, 安迪

1 个答案:

答案 0 :(得分:1)

将您的AC_CHECK_HEADERS_ONCE来电替换为:

AC_CHECK_HEADER([argp.h], [], AC_MSG_ERROR([cannot find required header argp.h]))

此变体不会定义HAVE_ARGP_H,但您无论如何都不需要它,因为您的代码无条件地需要该标头。该错误会停止配置过程。