Ошибка Automake './ltmain.sh' не найден

Я установил mingw и msys с помощью mingw-get-setup.exe. Я также установил Autotools (autoconf, automake, m4, libtool) в C:\/opt/autotools.

Когда я запускаю automake, всегда возникает следующая ошибка:

configure.ac:11: error: required file './ltmain.sh' not found

Если я скопирую ltmain.sh из установленного дерева libtools, выполнение завершится нормально.

Как я могу настроить automake, чтобы найти ltmain.sh без копирования?

Ответ 1

В проекте autoconf/automake/libtool вы должны вызвать:

  • libtoolize: это копирует/связывает несколько скриптов поддержки, включая ltmain.sh (который является основным компонентом libtool).
  • aclocal: это ищет все макросы m4, которые потребуются вашей конфигурации script, и сделать локальную копию для облегчения доступа.
  • autoheader: необязательно, если вы хотите использовать config.h/AC_CONFIG_HEADERS, в противном случае все макросы результата теста будут вставляться при вызове компилятора.
  • autoconf: чтобы развернуть все макросы, используемые configure.ac, в configure script.
  • automake: преобразовать все шаблоны Makefile.am в Makefile.in. Вероятно, вы хотите вызвать это с помощью --add-missing, поэтому дополнительные скрипты поддержки могут быть связаны/скопированы в ваш проект (например, compile, missing, depcomp, test-driver и т.д.).

Скорее всего, вы захотите добавить bootstrap script к каждому из ваших проектов, который вызывает все эти инструменты в этом порядке. Или вы можете быть ленивым и просто вызывать autoreconf -i и посмотреть, работает ли это для вашего проекта.

После (и while) у вас работает Makefile, сгенерированный configure script, autotools сам по себе заботится; то есть, если вы отредактируете configure.ac или любой Makefile.am, правильные инструменты выше будут снова вызваны, чтобы все было обновлено, просто запустив make. Просто будьте осторожны, чтобы не создавать синтаксическую ошибку в файлах Makefile.am, иначе вы можете сломать Makefile s, в результате чего make откажется от запуска - в этом случае вам нужно запустить bootstrap script (или autoreconf) вручную.

EDIT:

automake manual говорит об aclocal:

aclocal, как ожидается, исчезнет.

И далее вниз:

С точки зрения пользователя удаление aclocal может оказаться болезненным. Существует простая предосторожность, которую вы можете предпринять, чтобы сделать этот коммутатор более плавным: никогда не вызывайте aclocal самостоятельно. Держите этого парня под эксклюзивным контролем правил autoreconf и Automakes.

Итак, у вас есть: используйте autoreconf -i, чтобы быть надежным в будущем, если у вас нет оснований для непосредственного использования этих инструментов.