У меня есть программа, которая по умолчанию использует библиотеку readline (если пользователь специально не отключает ее с помощью --without-readline
). Пользователь также может указать альтернативное расположение для заголовков и библиотеки readline, используя --with-readline=
, например, --with-readline=/usr/local
.
Конечно, просто потому, что пользователь не отключил readline или не указал альтернативное местоположение, это означает, что заголовки и библиотека readline действительно существуют в системе (или там, где пользователь утверждает, что они это делают), поэтому я хочу проверить фактическую наличие readline, если он не отключен.
Я следую последнему примеру здесь для использования 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
вызвать gcc
, добавив -I/usr/local/include
(или там, где пользователь указывает), когда он делает AC_CHECK_HEADERS
и AC_SEARCH_LIBS
?
Я попытался явно увеличить CFLAGS
и LDFLAGS
сам (как я видел некоторые 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}"
]
)
но это не помогло.
FYI:
версия autoconf = 2.69
версия automake = 1.16.1