3

所以我正在为我的代码编写测试,并且我想对库函数的调用进行存根(确保它在正确的时间调用了正确的库调用,并且它正确地处理了错误)。

我想我是 C 标准库函数的 SOL,但这些不是我使用的唯一库。

在构建我的最终可执行文件(不是我的测试可执行文件)时,我想使用-lfuse,所以我在我的configure.ac

AC_CHECK_LIB([fuse], [fuse_main])

但是,-lfuse当它尝试构建我的check_PROGRAMS.

-lfuse在构建我的测试可执行文件(make check)时,有什么方法可以告诉自动工具我不想要这个库吗?然后我应该能够按我的意愿删除库调用,因为不会有任何其他同名链接。

4

2 回答 2

2

我看到 libfusefuse.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. 然后不要将这些变量添加到您的测试程序中。

于 2010-07-21T08:39:30.313 回答
0

好的,我想我想出了一个解决方案。我不相信这是正确的解决方案,所以我会回来看看是否有人能提出更好的解决方案。

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

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

然后在 中手动添加-lfuse我的<appname>_LDADD标志src/Makefile.am,然后在我制作主可执行文件时将其包含在内,并且我可以自由地在我的测试中存根函数。

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

于 2010-07-20T19:25:19.123 回答