gpt4 book ai didi

gnu - 使用 Autoconf 检测另一个库中的预处理器宏

转载 作者:行者123 更新时间:2023-12-04 10:44:45 26 4
gpt4 key购买 nike

我有一个已安装的库,我们将其称为“custom_lib”,我正在链接它。

我想检查该库是否安装了特定选项。

该库中的 options.h 头文件有一个预处理器宏列表,如下所示:

#undef THIS
#define THIS

#undef THAT
#define THAT

#undef WE_WANT_THIS_ONE
#define WE_WANT_THIS_ONE

在另一个项目中,我的 configure.ac 文件中有这个测试:
 OPTION_FOUND="no"
AC_CHECK_HEADERS(custom_lib/options.h)
AC_MSG_CHECKING([is libary configured with --enable-we_want_this_one])

#AC_EGREP_HEADER([ string to match ],
# [ header file ],
# [ action if found ],
# [ action if not found ])

AC_EGREP_HEADER([[WE_WANT_THIS_ONE]],
[custom_lib/options.h],
[OPTION_FOUND="yes"],
[OPTION_FOUND="no"])

if test "$OPTION_FOUND" = "yes"
then
# If we have WE_WANT_THIS_ONE check to see which compiler is being used
if test "$GCC" = "yes"
then
if test "$CC" != "icc"
then
#if compiler is not icc then add these flags
CFLAGS="$CFLAGS -maes -msse4"
fi
fi
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi

然后我 autreconf 并运行 ./configure 它总是返回此消息:
checking custom_lib/options.h usability... yes                                     
checking custom_lib/options.h presence... yes
checking for custom_lib/options.h... yes
checking is library configured with --enable-we_want_this_one... no

难道我做错了什么。我在configure.ac 中的测试中需要更改哪些内容,以便autoconf 可以检测到options.h 中的预处理器宏?

最佳答案

AC_EGREP_HEADER宏不会对测试头的文本执行 grep,而是在该文件上运行的预处理器的输出上执行 grep。

来自 autoconf manual :

— Macro: AC_EGREP_HEADER (pattern, header-file, action-if-found, [action-if-not-found])

If the output of running the preprocessor on the system header file header-file matches the extended regular expression pattern, execute shell commands action-if-found, otherwise execute action-if-not-found.



您可以使用 AC_COMPILE_IFELSE宏代替。例如(未测试):
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include "custom_lib/options.h"
#ifndef WE_WANT_THIS_ONE
# error macro not defined
#endif
]])], [OPTION_FOUND="yes"], [OPTION_FOUND="no"])

关于gnu - 使用 Autoconf 检测另一个库中的预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com