无法运行Makefile.am,我该怎么办?

时间:2010-11-17 09:50:05

标签: c++ linux makefile autotools

我有一个C项目在Linux中编译和运行。这是一个包含许多子目录的非常大的项目。在父目录中有文件Makefile.amMakefile.in

我尝试运行make -f Makefile.am,并收到以下错误:

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

这是什么意思?我如何完成任务?

4 个答案:

答案 0 :(得分:20)

这些文件与Autotools套件一起使用。 Makefile.am文件使用automake编译为Makefile。

查看目录中是否有configure脚本。如果有,则输入:

./configure

如果没有,则运行:

autoreconf
目录中的

,应创建configure脚本(您需要安装Autotools套件才能运行此脚本)。

之后,您应该有一个可以运行的configure脚本。

配置完成后,你应该在目录中有一个普通的Makefile,并且能够运行

make

答案 1 :(得分:9)

遗漏了什么:

  • 使用automake将Makefile.am转换为Makefile.in。
  • 通过运行configure来将Makefile.in转换为Makefile。

这些(Makefile。{am,in})都不应与make -f一起使用。

如果tarball已经附带configure,只需运行它并生成。如果没有,请运行./autogen.shbootstrap(*)。如果不存在,请改用autoreconf

(*)autogen / bootstrap:开发人员添加的一个便利脚本,只调用autoreconf。不幸的是,有些人会避开autoreconf并且不必要地自己调用所有低级命令。

答案 2 :(得分:3)

补充已经说过的话: 在项目目录中搜索名为 configure 的脚本。如果它在那里,建立项目将是:

./配置

并可选择安装:

sudo make install

或su -c“make install”

即使没有 configure 脚本。可能有一个 autogen.sh 。运行此脚本以生成配置脚本,并执行上述操作。

答案 3 :(得分:1)

Makefile.am可能与automake一起使用。

尝试:

automake

您可能也想尝试

make -f Makefile.in

因为这是运行automake的产品