在几个项目中,我看过没有Makefile.am的Makefile.in。例如。 bash http://git.savannah.gnu.org/cgit/bash.git/tree/和dtach http://dtach.cvs.sourceforge.net/viewvc/dtach/dtach/
我一直认为Makefile.in是由automake生成的。另外,Makefile.am是用户编写的文件,我不认为它会从代码库中省略。在bash源代码树中,Makefile.in太大而无法手写,而dtach中的Makefile.in也会生成。 Makefile.in是如何在这两个项目中生成的?
答案 0 :(得分:4)
libtool
和automake
自动工具可以彼此独立使用(或根本不使用),具体取决于您需要autoconf
做什么。因此,使用automake
生成Makefile.in
并非必需。
automake
工具也显着地输出了它已被使用:
#Makefile.in由来自Makefile.am的automake 1.11.1生成。
因此,您所看到的Makefile.in
可能是“手动”编辑的。
答案 1 :(得分:1)
Makefile.in看起来像普通的Makefile,但通常它希望由configure脚本完成(例如,用户在不同目录中的库的位置)。
Automake使用Makefile.am来构建这样的Makefile.in。如果制作你正在使用的软件包的开发人员已经有了Makefile并且编写了一个Makefile.am,那就太费劲了,他们只是将它转换为Makefile.in。