Разрешение библиотеки с autoconf?

в файлах смены файла сборки («AF-Android-SDK.jar») для компиляции файлов («libs / AF-Android-SDK.jar»), он будет работать

20
задан Alnitak 5 February 2009 в 19:40
поделиться

3 ответа

Необходимо вручную установить CFLAGS, CXXFLAGS и LDFLAGS, если Вы хотите, чтобы gcc/g ++ посмотрел в нестандартных местоположениях.

Так, прежде, чем звонить AC_CHECK_LIB(), сделайте что-то как

CFLAGS="$CFLAGS -I/opt/local/include"
CXXFLAGS="$CXXFLAGS -I/opt/local/include"
LDFLAGS="$LDFLAGS -L/opt/local/lib"

, Вам не нужен CXXFLAGS, если Вы только используете gcc всюду по Вашему настраивать сценарий.

10
ответ дан 30 November 2019 в 00:23
поделиться

Если библиотека поставляет .pc файл, рассмотрите использование PKG_CHECK_MODULES () макрос, который делает вещи, которые Вы хотите. Если это будет Ваша собственная библиотека, просто поставьте .pc файл в/usr/lib/pkgconfig, то это сделает намного легче для других разработчиков зависеть/использовать он.

10
ответ дан 30 November 2019 в 00:23
поделиться

скрипт autoconf не может угадать расположение "необязательных" библиотек, которое может отличаться на разных платформах. Поэтому можно сказать

CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" ./configure

Для AC_CHECK_LIB() нужно явно указать условие отказа в аргументе "action-if-false":

dnl This is simply print "no" and continue:
AC_CHECK_LIB([m], [sqrt123])
dnl This will stop:
AC_CHECK_LIB([m], [sqrt123], [], [AC_MSG_ERROR([sqrt123 was not found in libm])])

Вывод:

checking for sqrt123 in -lm... no
checking for sqrt123 in -lm... no
configure: error: sqrt123 was not found in libm

AC_CHECK_LIB() не отказывает по умолчанию по очевидной причине: можно проверить несколько разных библиотек, предоставляющих схожую функциональность, и выбрать одну из них :)

Также посмотрите это сообщение на похожую тему.

13
ответ дан 30 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: