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

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

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

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

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

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

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

 ./configure 

如果没有,那么运行:

 autoreconf 

在应创建configure脚本的目录中(您将需要安装Autotools套件才能运行该脚本)。

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

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

 make 

什么被遗漏了:

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

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

如果tarball已经配置了,只需运行make就可以了。 如果没有,运行./autogen.shbootstrap (*)。 如果不存在,请改用autoreconf

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

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

。/配置

使

并可以选择安装:

sudo make install

或者su -c“make install”

即使没有配置脚本。 可能有一个autogen.sh 。 运行这个脚本来生成配置脚本,然后按照上面的方法操作。

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

尝试:

 automake 

你可能也只是想尝试

 make -f Makefile.in 

由于这是运行automake的产品