2013-08-09 2 views
1

Ситуация в том, что я пытаюсь получить код, который я получил из Интернета (http://findingscience.com/pymur/), чтобы скомпилировать, и у меня НЕ НАРУШЕНИЯ СУДОЙ на машинах, над которыми я работаю.Модификация autoconf для правильного нахождения заголовка

Я проследил проблему вплоть до одной строки в 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).

+0

И './configure --prefix =/path/to' не работает? Что вы изменяете? Как вы используете 'configure'? – ldav1s

+0

@ ldav1s Параметр префикса не работает. Я непосредственно изменяю файл 'configure.ac', тот, который используется autoconf для создания файла' configure'. – JasonMond

+0

Модификация 'configure.ac' - это абсолютно неправильная вещь. Установите заголовок в свой домашний каталог и установите 'CPPFLAGS' соответствующим образом. –

ответ

1

Как правило, я бы сделал то, что предлагает Уильям Пурселл. К сожалению, это не сработает. Я попробовал. Там ошибка в пакете pymur где configure.ac полагается на очень старую версию из AC_PYTHON_DEVEL макроса, который задавливает CPPFLAGS перед проверкой indri/Index.hpp, так что эти каталоги не будут находиться в g++ командной строке.

Если вы хотите, чтобы пройти эту проблему, вы должны получить более updated version of that macro из Macro архива Autoconf и скопировать его в acinclude.d (после удаления acinclude.d/ac_python_devel.m4) и перезапустив autogen.sh. Я смог вызвать CPPFLAGS="-I /path/to/indri/include" ./configure и не пропустить эту проблему.

Это действительно проблема в том, что разработчик pymur должен исправить.

2

Вы абсолютно не нуждаетесь или не хотите изменять configure.ac. Просто установите файлы заголовков где-нибудь, у вас есть права на запись, и скажите скрипту configure, как их найти. Например, если установить заголовки в вашем домашнем каталоге (так что $ HOME/включить/Indri/Index.hpp существует), а затем запустить:

configure CPPFLAGS=-I$HOME/include 

Это должно работать на большинстве платформ. Обратите внимание, что изменение configure.ac с помощью пути /path/to/indri/Index.hpp не удастся, потому что ваша toolchain будет использовать это как относительный путь и, вероятно, ищет в таких местах, как /usr/include/path/to/indri/Index.hpp.