autotools:执行“make check”时不包含库

所以我正在为我的代码编写测试,我想要删除对库函数的调用(确保它在正确的时间调用正确的库调用,并且它适当地处理错误)。 我认为我是使用C标准库函数的SOL,但那些不是我正在使用的唯一库。 在构建我的最终可执行文件(而不是我的测试可执行文件)时,我想使用
-lfuse
,所以我将此行包含在我的
configure.ac
AC_CHECK_LIB([fuse], [fuse_main])
然而,当它试图建立我的
check_PROGRAMS
时,这也会在
-lfuse
中抛出。 在构建我的测试可执行文件时,有什么方法可以告诉autotools我不想要
-lfuse
库(
make check
)?然后我应该能够按照自己的意愿将库调用存根,因为没有其他任何东西与同名链接。     
已邀请:
我看到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
。然后就是不要将这些变量添加到测试程序中。     
好吧,我想我找到了一个解决方案。我不相信这是正确的解决方案,所以我会回到这里查看是否有人能想出更好的东西。 如果我将
configure.ac
中的默认成功/失败操作更改为
 AC_SUBST([HAVE_LIBFUSE])
 AC_CHECK_LIB([fuse], [fuse_main], [HAVE_LIBFUSE=1])
然后在
src/Makefile.am
中手动将
-lfuse
添加到我的
<appname>_LDADD
标志中,然后在我制作主可执行文件时将其包括在内,我可以自由地在测试中删除这些函数。 至少我认为我是,这足以让我现在继续前进。     

要回复问题请先登录注册