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

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

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

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

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


person sara    schedule 17.11.2010    source источник


Ответы (4)


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

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

./configure

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

autoreconf

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

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

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

make
person Lee Netherton    schedule 17.11.2010
comment
Как я уже сказал, вам нужно будет установить пакет Autotools для запуска этой команды. Посмотрите здесь: sourceware.org/autobook/autobook/autobook_274.html - person Lee Netherton; 17.11.2010
comment
я установил. теперь он говорит, что ему нужен configure.in или configure.ac - person sara; 17.11.2010
comment
Что ж, кажется, что, возможно, все части исходного кода «разработчика» отсутствуют. Вы уверены, что в каталоге нет файла configure? (Если есть, но он просто не исполняемый, вы всегда можете запустить его с помощью sh configure) - person Lee Netherton; 17.11.2010
comment
Кроме того, вы можете попробовать запустить autoscan, чтобы увидеть, создаст ли он пригодный для использования файл configure.in. Я предполагаю, что вам, возможно, придется отредактировать его, чтобы сделать его пригодным для использования. - person Lee Netherton; 17.11.2010
comment
autoreconf можно установить вместе с sudo apt install autoconf - person Boris; 20.02.2021

Что упущено:

  • Makefile.am преобразуются в Makefile.in с помощью automake.
  • Makefile.in преобразуются в Makefile при запуске configure.

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

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

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

person user502515    schedule 22.11.2010

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

./настроить

делать

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

судо сделать установить

или su -c "сделать установку"

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

person subhacom    schedule 17.11.2010

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

пытаться:

automake

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

make -f Makefile.in

Так как это продукт запуска automake

person Daren Thomas    schedule 17.11.2010
comment
требуется configure.in или configure.ac - person sara; 17.11.2010