autotools - 应该如何重置 AC_CACHE_CHECK?

标签 autotools autoconf

应该如何重置 AC_CACHE_CHECK?

在 autoconf 中,我正在检查标题。我已经添加了一些逻辑来更加努力地在可能不在默认包含路径中的 std 文件夹中查找头文件。我这样做的方法是首先尝试找到一个带有内置 AC_CHECK_HEADER 的头文件。如果未找到 header ,我会修改 CPPFLAGS 并重试。

问题在于 autoconf 的缓存。我想强制检查(或绕过缓存检查。)如果我不强制检查,无论 autoconf 是否找到 header ,它都会提取在第一次检查中找到的内容,呃。

谢谢, 陈子

最佳答案

取消设置缓存变量,例如ac_cv_header_syslog_h。您可以检查 config.log 以了解您感兴趣的缓存变量的确切拼写。不幸的是,无法移植地取消设置 shell 变量。 Autoconf 使用的内部解决方法是使用 $as_unset,如果支持,它会扩展为 unset。所以你可以这样写:

$as_unset ac_cv_header_syslog_h

不过,这应该适用于当今大多数合理的系统。

更好、更直接的解决方案可能是为第一轮检查正确设置 CPPFLAGS。正如您所注意到的,您正在尝试的内容并没有得到真正的支持。

关于autotools - 应该如何重置 AC_CACHE_CHECK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632767/

相关文章:

ios - 编译 Liblinphone 时出现 Libtool 问题

makefile - Autotools 的默认编译器标志

c++ - Automake 用于所有子目录中的共享库

c++ - 如何让配置脚本检查依赖关系

autotools - autoconf和autoreconf之间的区别

linux - 为 arm-linux-gnueabihf 交叉编译 libcurl : Unable to link function recv

使用 autoconf 检查 C#define 的值

autotools - AS_IF 和 AC_MSG_ERROR : error: possibly undefined macro

macos - 使用 i386 arch 而非 x86_64 在 OSX 上构建 libFLAC

ubuntu - libtool 在链接期间将 -lcurl 更改为 libcurl.so