我正在构建我的第一个autoconf托管包.
但是,我找不到任何关于如何指定所需库的简单示例,并找到它可能位于不同位置的库.
我现在有:
AC_CHECK_LIB(['event'], ['event_init'])
但:
它找不到安装的版本 /opt/local/lib
如果实际上没有找到库,它不会抱怨
我需要设置包括路径/opt/local/include
太
任何帮助,或体面教程的链接非常感谢...
autoconf脚本无法猜测"可选"库位置,这可能因平台而异.所以你可以说
CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" ./configure
因为AC_CHECK_LIB()
您需要在"action-if-false"参数中明确指定失败条件:
dnl This is simply print "no" and continue: AC_CHECK_LIB([m], [sqrt123]) dnl This will stop: AC_CHECK_LIB([m], [sqrt123], [], [AC_MSG_ERROR([sqrt123 was not found in libm])])
输出:
checking for sqrt123 in -lm... no checking for sqrt123 in -lm... no configure: error: sqrt123 was not found in libm
AC_CHECK_LIB()
默认情况下,由于显而易见的原因不会失败:可以检查几个提供类似功能的不同库并选择其中一个:)
也看看这篇文章的类似主题.
您需要手动设置CFLAGS
,CXXFLAGS
并且LDFLAGS
如果你想GCC/G ++看在非标准位置.
所以,在打电话之前AC_CHECK_LIB()
,做一些像
CFLAGS="$CFLAGS -I/opt/local/include" CXXFLAGS="$CXXFLAGS -I/opt/local/include" LDFLAGS="$LDFLAGS -L/opt/local/lib"
如果您只在整个配置脚本中使用gcc,则不需要CXXFLAGS.
如果库附带.pc文件,请考虑使用PKG_CHECK_MODULES()宏来执行您想要的操作.如果它是您自己的库,只需将.pc文件发送到/ usr/lib/pkgconfig,它将使其他开发人员更容易依赖/使用它.