PKG_CHECK_MODULES и AC_CHECK_LIB для проверки доступности библиотек

Я использую autotools для проекта. Я хотел понять рекомендации, когда дело доходит до проверки существования библиотек?

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

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


person Anirudh    schedule 08.04.2015    source источник


Ответы (2)


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

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

person usr1234567    schedule 08.04.2015
comment
Спасибо за ответ. В конце концов я решил использовать AC_CHECK_LIB только для этих библиотек. - person Anirudh; 11.04.2015

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

person William Pursell    schedule 16.04.2015
comment
Справедливо. Является ли правильным решением всегда использовать AC_CHECK_LIB? Однако это не очень хорошо работает для функций C++ (nerdland.net /2009/07/detecting-c-libraries-with-autotools). Кроме того, pkg-config --libs (когда он работает) также дает вам зависимости от вторичных библиотек. - person Anirudh; 16.04.2015