0

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

AC_CHECK_HEADERS_ONCE(argp.h)

如果argp.h系统上缺少 ,则 configure 只会声明

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

但什么也不做。当然,程序将无法编译,因为预期的标头不存在,并且将包含包含在#ifdef HAVE_ARGP_H指令中,并且可能添加一个#else #error [...]构造会做我想要的,但这似乎相当乏味。

有没有一种好方法可以在配置时间而不是编译时间错误地丢失但需要的标头?

谢谢,安迪

4

1 回答 1

1

Replace your AC_CHECK_HEADERS_ONCE call with:

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

This variant won't define HAVE_ARGP_H, but you don't need that anyway since your code requires that header unconditionally. The error stops the configure process.

于 2013-02-16T08:01:41.420 回答