2014-12-01 1 views
1

В настоящее время я пытаюсь включить библиотеку libtool из другого проекта, который находится рядом с моим текущим проектом. Я могу проверить библиотеку в конфигурации с помощьюAutotools: top_srcdir и abs_top_srcdir пустые

LDFLAGS="$LDFLAGS -L$top_srcdir../otherproject/libotherproject/.libs/" 
AC_CHECK_LIB([otherproject],[init],[],[AC_MSG_ERROR([No otherproject libary found.])]) 

в моей конфигурации.ac. Пока все в порядке. Но если я построить проект, используя сделать, я получаю сообщение об ошибке от Libtool в то время как он находится в currentproject/источники /:

../libtool: line 5986: cd: ../otherproject/libotherproject/.libs/: No such file or directory 
libtool: link: cannot determine absolute directory name of `../otherproject/libotherproject/.libs/' 

, логично, потому что это должно быть что-то вроде ../../otherproject/libotherproject/.libs/. Я пытался отладить, что и обнаружили, что, если это использовать

AC_MSG_NOTICE([Top src dir is: $top_srcdir]) 

в configure.ac, сценарий конфигурации говорит мне

configure: Top src dir is: 

только. Такое же поведение для $ abs_top_srcdir. $ srcdir - это "." всегда. Я немного вычислил документацию и обнаружил, что $ builddir всегда должен быть «.», Но также пуст в моем случае. Это ошибка? Может, я забыл позвонить AC_init_anything? Спасибо за вашу помощь!

+1

Не уверен, что вы действительно хотите использовать подкаталог '.libs' с libtool. Вы должны просто передать '/libxxx.la'. Какие шаги вы используете для генерации скриптов 'configure' и шаблонов 'Makefile.in'? –

+0

im обычно выполняет autoconf и automake для создания моих файлов. Где я должен пройти путь к .la-файлу? – Martze

ответ

0

Вы не должны использовать srcdir в качестве переменной, чтобы определить путь к построенному объекту. Вместо этого используйте $(top_builddir).

Чтобы использовать переменные Makefile, вам необходимо использовать скобки либо $(), либо ${}.

Смежные вопросы