修改autoconf以正确定位标头

时间:2013-08-09 15:14:44

标签: configure autoconf

情况是我正在尝试从互联网上获取代码(http://findingscience.com/pymur/)进行编译,而我在我正在处理的机器上没有绝对允许。

我已将问题追溯到configure.ac中的一行:

AC_CHECK_HEADER([indri/Index.hpp],,[
   AC_MSG_ERROR([Could not find lemur's header files.])
])

因为我收到来自./configure的错误消息,说:

checking indri/Index.hpp usability... no
checking indri/Index.hpp presence... no
checking for indri/Index.hpp... no
configure: error: Could not find lemur's header files.

我尝试过直接修改它,以便indri/Index.hpp具有类似/path/to/indri/Index.hpp的硬编码路径,这似乎没什么帮助。

任何获得代码编译的解决方案,我都不需要修改/ usr这样的目录(因为我没有root权限),我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

您绝对不需要或不想修改configure.ac。只需在您具有写权限的地方安装头文件,并告诉配置脚本如何找到它们。例如,如果在HOME目录中安装标题(以便存在$ HOME / include / indri / Index.hpp),则运行:

configure CPPFLAGS=-I$HOME/include

这应该适用于大多数平台。请注意,使用路径/path/to/indri/Index.hpp修改configure.ac将会失败,因为您的工具链会将其用作相对路径,并且可能会查找/usr/include/path/to/indri/Index.hpp等位置。

答案 1 :(得分:1)

通常情况下,我会按照William Pursell的建议行事。不幸的是,这不会奏效。我尝试过这个。 pymur包中有一个错误configure.ac依赖于非常旧的版本的AC_PYTHON_DEVEL宏,它会在检查CPPFLAGS之前查找indri/Index.hpp,所以这些目录不在g++命令行中。

如果您想解决这个问题,您必须从Autoconf Macro Archive获得更多updated version of that macro并将其复制到acinclude.d(删除acinclude.d/ac_python_devel.m4后)并重新运行{{ 1}}。我能够调用autogen.sh并且不会因为特定问题而绊倒。

这真是一个问题,pymur维护者应该修复