我有一个C项目在Linux中编译和运行。这是一个包含许多子目录的非常大的项目。在父目录中有文件Makefile.am
和Makefile.in
。
我尝试运行make -f Makefile.am
,并收到以下错误:
make: Nothing to be done for `Makefile.am'.
这是什么意思?我如何完成任务?
答案 0 :(得分:20)
这些文件与Autotools套件一起使用。 Makefile.am文件使用automake编译为Makefile。
查看目录中是否有configure
脚本。如果有,则输入:
./configure
如果没有,则运行:
autoreconf
目录中的,应创建configure
脚本(您需要安装Autotools套件才能运行此脚本)。
之后,您应该有一个可以运行的configure
脚本。
配置完成后,你应该在目录中有一个普通的Makefile,并且能够运行
make
答案 1 :(得分:9)
遗漏了什么:
这些(Makefile。{am,in})都不应与make -f
一起使用。
如果tarball已经附带configure,只需运行它并生成。如果没有,请运行./autogen.sh
或bootstrap
(*)。如果不存在,请改用autoreconf
。
(*)autogen / bootstrap:开发人员添加的一个便利脚本,应只调用autoreconf
。不幸的是,有些人会避开autoreconf并且不必要地自己调用所有低级命令。
答案 2 :(得分:3)
补充已经说过的话: 在项目目录中搜索名为 configure 的脚本。如果它在那里,建立项目将是:
./配置
请
并可选择安装:
sudo make install
或su -c“make install”
即使没有 configure 脚本。可能有一个 autogen.sh 。运行此脚本以生成配置脚本,并执行上述操作。
答案 3 :(得分:1)