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

时间:2010-07-20 19:00:59

标签: c testing autotools stubs

所以我正在为我的代码编写测试,并且我想要删除对库函数的调用(确保它在正确的时间调用正确的库调用,并且它适当地处理错误)。

我认为我使用C标准库函数是SOL,但那些并不是我正在使用的唯一库。

在构建我的最终可执行文件(而不是我的测试可执行文件)时,我想使用-lfuse,因此我将此行包含在configure.ac

AC_CHECK_LIB([fuse], [fuse_main])

但是,当-lfuse尝试构建我的check_PROGRAMS时,这也会被-lfuse抛出。

在构建我的测试可执行文件(make check)时,有什么方法可以告诉autotools我不想要{{1}}库吗?然后我应该能够按照自己的意愿存根库调用,因为没有其他任何东西与同名相关联。

2 个答案:

答案 0 :(得分:2)

我看到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中的

。然后就是不要将这些变量添加到测试程序中。

答案 1 :(得分:0)

好的,我想我找到了一个解决方案。我不相信它是正确的解决方案,因此我将在此处查看是否有人能够提出更好的解决方案。

如果我将configure.ac中的默认成功/失败操作更改为

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

然后手动将-lfuse添加到<appname>_LDADD中的src/Makefile.am标记中,然后在我创建主可执行文件时将其包含在内,并且我可以自由地删除我的函数测试

至少我认为我是,这足以让我现在继续前进。