autoconf 是否发现系统中存在的头文件?

Does autoconf discover header files present on system?

我正在尝试设置一个项目以使用 GNU 自动工具构建。我的源文件之一具有以下头文件指令:

#include<lapacke.h>

在 OpenSUSE 机器上,lapacke.h 安装在 /usr/include/openblas/ 中,但此位置不适用于其他发行版。

在我的configure.ac文件中,我检查这个头文件是否可用:

AC_CHECK_HEADERS([fcntl.h float.h inttypes.h limits.h stdint.h stdlib.h string.h unistd.h lapacke.h],,AC_MSG_ERROR([required header file missing]))

如果没有其他提示,配置脚本无法找到 lapacke.h checking lapacke.h usability... no checking lapacke.h presence... no checking for lapacke.h... no configure: error: required header file missing

我可以手动指定目录./configure CFLAGS="-I/usr/include/openblas",成功了。最终用户是否必须手动提交路径以查找 lapacke.h,或者 autoconf 是否有办法自动发现它?

Do end users have to manually submit the path to look for lapacke.h, or is there a way for autoconf to discover this automatically?

这是autoconf可以告诉的,但不一定会自动算出来的,例如:

AC_CHECK_HEADERS([fcntl.h float.h inttypes.h limits.h stdint.h stdlib.h string.h unistd.h],,AC_MSG_ERROR([required header file missing]))
AC_CHECK_HEADERS([openblas/lapacke.h lapacke.h],,AC_MSG_ERROR([required header file missing]))