所以我正在为我的代码编写测试,并且我想要删除对库函数的调用(确保它在正确的时间调用正确的库调用,并且它适当地处理错误)。
我认为我使用C标准库函数是SOL,但那些并不是我正在使用的唯一库。
在构建我的最终可执行文件(而不是我的测试可执行文件)时,我想使用-lfuse
,因此我将此行包含在configure.ac
AC_CHECK_LIB([fuse], [fuse_main])
但是,当-lfuse
尝试构建我的check_PROGRAMS
时,这也会被-lfuse
抛出。
在构建我的测试可执行文件(make check
)时,有什么方法可以告诉autotools我不想要{{1}}库吗?然后我应该能够按照自己的意愿存根库调用,因为没有其他任何东西与同名相关联。
答案 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
标记中,然后在我创建主可执行文件时将其包含在内,并且我可以自由地删除我的函数测试
至少我认为我是,这足以让我现在继续前进。