возможно ли иметь несвязанный проект autotools внутри каталога проекта autotools? - PullRequest
2 голосов
/ 04 октября 2011

У меня есть два проекта autotools, которые отлично работают сами по себе:

p1 не собирает никаких библиотек и не использует C ++ и предназначен для компиляции пользователем.Так что я здесь не libtoolize и LT_INIT.

p2 создает крошечную библиотеку C ++, которая используется только в разработке, здесь у меня LT_INIT и я вызываю libtoolize.

Но когда я помещаю каталог p2 в p1, запуск automake внутри каталога p2 заметит, что он находится в подкаталоге проекта autotools, и я получаю ошибку

configure.ac:31: required file `../ltmain.sh' not found

Я пыталсядобавив

AC_CONFIG_AUX_DIR([.])

в файл configure.ac p2, но тогда переменная ac_aux_dir в configure становится пустой, и я получаю сообщение об ошибке

configure: error: cannot run /bin/sh /config.sub

(строка в configure пытается запустить$ax_aux_dir/config.sub)

Есть ли чистый способ иметь несвязанный проект autotools внутри проекта autotools, или я должен просто отказаться?

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Я понял это через две минуты после того, как спросил, насколько это типично. Как видно, файл configure.ac должен иметь:

AC_INIT(…)
AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE(…)

а не:

AC_CONFIG_AUX_DIR([.])
AC_INIT(…)
AM_INIT_AUTOMAKE(…)

, как у меня (это выдает сообщение об ошибке, если AUX_DIR после AM_INIT_AUTOMAKE, что привело меня к мысли, что это должно быть и после AC_INIT).

В любом случае, это работает:)

2 голосов
/ 04 октября 2011

В configure.ac p1 вы можете написать:

AC_CONFIG_SUBDIRS(p2)

Этот вызов AC_CONFIG_SUBDIRS приведет к тому, что p2 будет рассматриваться как подпроект p1 с его собственным configure.ac и т. Д., Причем все «просто работает автоматически» (надеюсь). В руководстве autoconf есть также полный небольшой пример

.
...