autotools: не включать библиотеку при выполнении проверки - PullRequest
3 голосов
/ 20 июля 2010

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

Я думаю, что я SOL со стандартными библиотечными функциями C, но это не единственные библиотеки, которые я использую.

При сборке моего окончательного исполняемого файла (не моего тестового исполняемого файла) я хочуиспользуйте -lfuse, поэтому я включил эту строку в мой configure.ac

AC_CHECK_LIB([fuse], [fuse_main])

Однако, это также бросается в -lfuse, когда он пытается построить check_PROGRAMS.

IsЕсть ли какой-то способ, которым я могу сказать autotools, что мне не нужна библиотека -lfuse при сборке моего тестового исполняемого файла (make check)?Тогда я смогу заглушить вызовы библиотеки, как захочу, поскольку больше ничего не будет связано с тем же именем.

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Я вижу, что libfuse предоставляет файл fuse.pc в своем исходном дистрибутиве, поэтому правильный способ проверить это - использовать pkg-config.Вы можете сделать

PKG_CHECK_MODULES([APPNAME], [fuse ...and any other libraries to check for...])

в вашем configure.ac, а затем

appname_CFLAGS += @APPNAME_CFLAGS@
appname_LIBS += @APPNAME_LIBS@

в src/Makefile.am.Тогда просто не добавляйте эти переменные в свои тестовые программы.

0 голосов
/ 20 июля 2010

Хорошо, думаю, я нашел решение .Я не уверен, что это правильное решение, поэтому я проверю здесь, чтобы узнать, может ли кто-нибудь придумать что-нибудь получше.

Если я изменю действия по умолчанию для успеха / неудачив моих configure.ac до

 AC_SUBST([HAVE_LIBFUSE])
 AC_CHECK_LIB([fuse], [fuse_main], [HAVE_LIBFUSE=1])

А затем вручную добавьте -lfuse к моим <appname>_LDADD флагам в src/Makefile.am, тогда он включается только тогда, когда я делаю основной исполняемый файл, и я могуОстановите функции в моих тестах.

По крайней мере, я так думаю, и этого мне достаточно, чтобы двигаться вперед.

...