Как заставить скрипт настройки проверять зависимости - PullRequest
3 голосов
/ 15 июня 2009

Я сгенерировал скрипт конфигурации с autoconf для сборки моего проекта.

Работает нормально, если у меня не установлена ​​необходимая библиотека. Make возвращает ошибку, если не хватает некоторых файлов, но она должна быть проверена скриптом configure, я думаю?

Итак, мой вопрос: как изменить сценарий, сгенерированный autoconf, чтобы искать зависимости и сообщать пользователю, в каких библиотеках ему не хватает?

Ответы [ 3 ]

4 голосов
/ 15 июня 2009

Зависит от зависимости, универсального решения не существует.

Существуют макросы AC_CHECK_LIB и AC_SEARCH_LIBS , которые могут работать для вас, если библиотеки и заголовки установлены в стандартных местах.

В настоящее время многие пакеты поддерживают pkg-config или что-то подобное, что позволяет вам проверять наличие библиотек, а также может предоставить вам необходимые флаги компилятора и компоновщика.

С пакетами, которые не работают с макросами AC и не поддерживают pkg-config или аналогичные, вам, вероятно, придется самостоятельно написать тонну скриптов, чтобы выяснить, доступна ли зависимость и какие параметры компилятора и компоновщика ей требуются , И даже тогда его трудно сделать портативным.

2 голосов
/ 15 июня 2009

Да, вы хотите выполнить проверку во время настройки. Вставьте следующий код ( благодаря Shlomi Fish ) в ваш configure.ac:

if test "x$requires_libavl" = "xyes" ; then
    AC_CHECK_LIB(avl, avl_create, [], [
        echo "Error! You need to have libavl around."
        exit -1
        ])
fi

Обратите внимание, что если у вас автоконф до версии 2.5, вы будете использовать configure.in.

1 голос
/ 15 июня 2009

То, как я делал это в прошлом, - это написать тривиальную программу, которая либо извлекает необходимый заголовочный файл, либо связывается с необходимой библиотекой, и компилирует / связывает это в скрипте конфигурации. Если это не удается, вы отправляете сообщение о том, что требование не выполнено. Я бы предложил более подробную информацию, но код находится на диске, которого больше нет у нас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...