当前位置:  开发笔记 > 前端 > 正文

使用autoconf的库解析?

如何解决《使用autoconf的库解析?》经验,为你挑选了3个好方法。

我正在构建我的第一个autoconf托管包.

但是,我找不到任何关于如何指定所需库的简单示例,并找到它可能位于不同位置的库.

我现在有:

AC_CHECK_LIB(['event'], ['event_init'])

但:

    它找不到安装的版本 /opt/local/lib

    如果实际上没有找到库,它不会抱怨

    我需要设置包括路径/opt/local/include

任何帮助,或体面教程的链接非常感谢...



1> dma_k..:

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() 默认情况下,由于显而易见的原因不会失败:可以检查几个提供类似功能的不同库并选择其中一个:)

也看看这篇文章的类似主题.


更好的是,`./ configure CPPFLAGS = ...`它将记住后续`./config.status --recheck`中的变量.见http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Variables.html

2> codelogic..:

您需要手动设置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.


不,不,不,不,不.你绝对不能在configure.ac中分配CFLAGS来自autoconf文档:"......包本身不应该设置用户变量......""CFLAGS就是这样一个变量."
*FLAGS只能在configure.ac中临时设置,例如,以满足AC_CHECK_foo.最终必须恢复原始值.
我同意Alnitak的意思是建议使用CFLAGS/CXXFLAGS(取决于您打算使用的C/C++编译器)应仅用于编译器参数(例如"-g"," - O3").包括应该去CPPFLAGS(C预处理器).

3> Johan Dahlin..:

如果库附带.pc文件,请考虑使用PKG_CHECK_MODULES()宏来执行您想要的操作.如果它是您自己的库,只需将.pc文件发送到/ usr/lib/pkgconfig,它将使其他开发人员更容易依赖/使用它.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有