我正在构建我的第一个autoconf托管包.
但是,我找不到任何关于如何指定所需库的简单示例,并找到它可能位于不同位置的库.
我现在有:
AC_CHECK_LIB(['event'], ['event_init'])
Run Code Online (Sandbox Code Playgroud)
但:
/opt/local/lib
/opt/local/include
太任何帮助,或体面教程的链接非常感谢...
dma*_*a_k 13
autoconf脚本无法猜测"可选"库位置,这可能因平台而异.所以你可以说
CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" ./configure
Run Code Online (Sandbox Code Playgroud)
因为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])])
Run Code Online (Sandbox Code Playgroud)
输出:
checking for sqrt123 in -lm... no
checking for sqrt123 in -lm... no
configure: error: sqrt123 was not found in libm
Run Code Online (Sandbox Code Playgroud)
AC_CHECK_LIB()
默认情况下,由于显而易见的原因不会失败:可以检查几个提供类似功能的不同库并选择其中一个:)
也看看这篇文章的类似主题.
cod*_*gic 10
您需要手动设置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"
Run Code Online (Sandbox Code Playgroud)
如果您只在整个配置脚本中使用gcc,则不需要CXXFLAGS.
Joh*_*lin 10
如果库附带.pc文件,请考虑使用PKG_CHECK_MODULES()宏来执行您想要的操作.如果它是您自己的库,只需将.pc文件发送到/ usr/lib/pkgconfig,它将使其他开发人员更容易依赖/使用它.