Не удается запустить Makefile.am, что мне делать?

У меня есть проект C для компиляции и запуска в Linux. Это очень большой проект со многими подкаталогами. Внутри родительского каталога есть файлы Makefile.am и Makefile.in.

Я попробовал запустить make -f Makefile.am и получил следующую ошибку:

make: Nothing to be done for `Makefile.am'.

Что это значит? Как выполнить мою задачу?

Ответ 1

Эти файлы используются с пакетом Autotools. Файлы Makefile.am скомпилированы в Makefiles с помощью automake.

Посмотрите, есть ли в каталоге configure script. Если есть, то введите:

./configure

Если нет, то запустите:

autoreconf

в каталоге, который должен создать configure script (вам нужно будет установить набор Autotools для его запуска).

После этого вы должны иметь configure script, который вы можете запустить.

После завершения настройки вы должны иметь обычный Makefile в каталоге и сможете запускать

make

Ответ 2

Что осталось:

  • Makefile.am преобразуется в Makefile.in с использованием automake.
  • Makefile.in преобразуется в Makefile, запустив configure.

Ни один из них (Makefile. {am, in}) не предполагается использовать с make -f.

Если tarball уже поставляется с настройкой, просто запустите это и сделайте. Если это не так, запустите ./autogen.sh или bootstrap (*). Если этого не существует, используйте autoreconf вместо этого.

(*) autogen/bootstrap: удобство script добавлено разработчиками, которые должны просто вызвать autoreconf. К сожалению, есть люди, которые избегают autoreconf и излишне называют все команды низкого уровня.

Ответ 3

В дополнение к уже сказанному: Найдите script, называемый configure в каталоге проекта. Если он есть, то создание проекта будет:

./Configure

сделать

и, необязательно, для установки:

sudo make install

или su -c "make install"

Даже если нет конфигурации script. может быть один autogen.sh. Запустите этот script, чтобы сгенерировать конфигурацию script и выполните действия, описанные выше.

Ответ 4

Makefile.am, вероятно, будет использоваться с automake.

попробовать:

automake

вы также можете просто попробовать

make -f Makefile.in

Так как это произведение запускаемого автомата