gpt4 book ai didi

c - 使 AC_ARG_WITH 影响后续 AC_CHECK_HEADERS 的 gcc 调用

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:11 24 4
gpt4 key购买 nike

我有一个默认使用 readline 库的程序(除非用户使用 --without-readline 明确禁用它)。用户还可以使用 --with-readline= 为 readline header 和库指定备用位置,例如,--with-readline=/usr/local

当然,仅仅因为用户没有禁用 readline 或指定备用位置就意味着 readline header 和库实际上存在于系统中(或者用户声称存在的位置),所以我想检查实际的如果未禁用,则存在 readline。

我按照最后一个例子 here对于使用 AC_ARG_WITH,但后来在我的 configure.ac 文件中,我这样做:

AC_CHECK_HEADERS([readline/readline.h readline/history.h])

# ...

AC_SEARCH_LIBS([readline],[readline])

但是,给予:

./configure --with-readline=/usr/local

结果:

checking readline/readline.h usability... no
checking readline/readline.h presence... no
checking for readline/readline.h... no
checking readline/history.h usability... no
checking readline/history.h presence... no
checking for readline/history.h... no

查看 config.log:

configure:6517: checking readline/readline.h usability
configure:6517: gcc -std=gnu99 -std=gnu99 -c -g -O2 conftest.c >&5
conftest.c:80:31: error: readline/readline.h: No such file or directory

gcc 的调用没有 -I/usr/local/include 所以当然没有找到它。

所以问题是:如何让 configure 通过添加 -I/usr/local/include(或任何地方)来调用 gcc用户指定)当它执行 AC_CHECK_HEADERSAC_SEARCH_LIBS 时?


我确实尝试过显式地增加 CFLAGSLDFLAGS 自己(正如我看到一些 configure.ac 文件所做的那样):

AC_ARG_WITH([readline],
AS_HELP_STRING([--without-readline], [disable support for readline]),
[],
[with_readline=yes]
)
AS_IF([test x$with_readline = xyes],
[
AC_DEFINE([WITH_READLINE], [1],
[Define to 1 if readline support is enabled.])
CFLAGS="-I${withval} ${CFLAGS}"
LDFLAGS="-L${withval} ${LDFLAGS}"
]
)

但这并没有帮助。


仅供引用:

autoconf 版本 = 2.69
automake 版本 = 1.16.1

最佳答案

好的,我明白了。犯了三个错误:

  1. 应该是:

    AS_IF([test x$with_readline != xno],

    如果用户设置了一个路径,那么 with_readline 就是那个路径,例如,/usr/local,所以它不是 = 是的。实际上,GNU 示例就是这样显示的。 (我不确定我是怎么弄错的。)

  2. 当用户给出 =value 时,标志的设置应该发生,即等于是的:

    AS_IF([test x$withval != xyes],
    [
    CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
    LDFLAGS="-L${withval}/lib ${LDFLAGS}"
    ]
    )
  3. 如上所示,我也忘记在{withval}<​​后面加上/include/lib了。

关于c - 使 AC_ARG_WITH 影响后续 AC_CHECK_HEADERS 的 gcc 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688850/

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