2015-04-08 3 views
0

Я использую autotools для проекта. Я хотел понять, что лучше всего подходит для проверки наличия библиотек ?PKG_CHECK_MODULES vs AC_CHECK_LIB для проверки доступности библиотек

Я пробовал использовать PKG_CHECK_MODULES, но, к сожалению, многие из библиотек, которые я использую, не отображаются в pkg-config --list-all (даже после запуска ldconfig).

Альтернативой является использование AC_CHECK_LIB, но это требует от меня указать пример функции из каждой библиотеки, которую мне нужно проверить.

ответ

0

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

Если Autoconf уже предоставляет тест, или вы можете скопировать тест из другого проекта с открытым исходным кодом.

+0

Спасибо за ответ. Наконец, я решил использовать AC_CHECK_LIB только для этих библиотек. – Anirudh

1

Должен не согласиться с принятым ответом. (См. PKG_CHECK_MODULES considered harmful?). PKG_CHECK_MODULES был популярен много лет назад, но большинство разработчиков в списках рассылки autoconf никогда не считалось хорошей практикой. Autotools не являются системой управления пакетами, и PKG_CHECK_MODULES, похоже, является попыткой использования функций управления пакетами для обуви. Если пакет использует PKG_CHECK_MODULES, скрипт configure должен все равно вызывать AC_CHECK_LIB для проверки информации, возвращаемой pkg-config, или риска сбой сборки. Кроме того, если пользователь вызывает configure с LDFLAGS = -l/p/a/t/h /, они должны надежно ожидать, что сборка будет использовать /p/a/t/h/liboo.so вместо использования какого-либо другого местоположения, но PKG_CHECK_MODULES требует, чтобы пользователь либо переопределял PKG_CONFIG_PATH, либо иным образом изменял ответ от pkg-config, чтобы переопределить путь поиска библиотеки.

+1

Справедливо. Правильное ли решение всегда использовать AC_CHECK_LIB? Это не очень хорошо работает для функций C++ (http://nerdland.net/2009/07/detecting-c-libraries-with-autotools/). Кроме того, pkg-config -libs (когда он работает) также дает дополнительные зависимости в библиотеке. – Anirudh

Смежные вопросы