0

我在 cygwin 上使用了 autoconf/automake 配置脚本,但我遇到的问题是它无法找到我的依赖项。

例如,在我的 configure.ac 中:

AC_CHECK_LIB(mp3lame,lame_init,,AC_MSG_ERROR(找不到所需的库 LAME。)) AC_CHECK_HEADER(lame/lame.h,,AC_MSG_ERROR(找不到 LAME 的头文件。))

找跛脚。Lame 已安装,如果我安装了,我locate lame.h会在/usr/local/include/lame/lame.h. 现在,如果我设置 LIBRARY_PATH 和 INCLUDE_PATH

导出 INCLUDE_PATH=/usr/local/include/ 导出 LIBRARY_PATH=/usr/local/lib/

它按预期工作。我通过下载并运行安装了 lame:

./configure
make
make install 

所以我认为它应该以一个“足够标准”的路径结束,以便我的配置脚本找到它。以类似的方式,我正在使用以下方法检查 json 解析器 jansson:

PKG_CHECK_MODULES(JANSSON,jansson)

除非我这样做,否则它不会找到它:

导出 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

这是 cygwin 的问题(我不这么认为)还是我的 configure.ac 脚本有问题?

4

1 回答 1

1

这不是 cygwin 的问题,也不是您的 configure.ac 的问题。它是它的“功能”,PKG_CHECK_MODULES也是我不建议使用它的原因之一。如果使用从 configure.ac 生成的配置脚本PKG_CHECK_MODULES,则需要用户设置PKG_CONFIG_PATH. 最好的方法是使用AC_CHECK_LIB而不是PKG_CHECK_MODULES. 你是绝对正确的,它./configure && make && make install给你一个应该工作的标准安装。问题在于PKG_CHECK_MODULES标准安装不能很好地发挥作用。

于 2012-06-18T13:51:19.577 回答