我有一个C编译和运行在Linux中的项目。 这是一个非常大的项目,有很多子目录。 在父目录里面有文件Makefile.am
和Makefile.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,in})都不能与make -f
一起使用。
如果tarball已经配置了,只需运行make就可以了。 如果没有,运行./autogen.sh
或bootstrap
(*)。 如果不存在,请改用autoreconf
。
(*)autogen / bootstrap:由开发人员添加的便利脚本,只需调用autoreconf
。 不幸的是,有些人避开autoreconf,不必要地自己调用所有低级命令。
为了补充已经说过的内容:在项目目录中搜索名为configure的脚本。 如果在那里,建设项目将是:
。/配置
使
并可以选择安装:
sudo make install
或者su -c“make install”
即使没有配置脚本。 可能有一个autogen.sh 。 运行这个脚本来生成配置脚本,然后按照上面的方法操作。
Makefile.am
可能与automake一起使用。
尝试:
automake
你可能也只是想尝试
make -f Makefile.in
由于这是运行automake的产品