在项目中没有Makefile.am的Makefile.in

在几个项目中,我看过没有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是如何在这两个项目中生成的?

libtoolautomake autotools可以彼此独立使用(或根本不使用),具体取决于你需要autoconf做什么。 因此, 不需要使用automake来生成Makefile.in

automake工具也显着地输出它已被使用:

#Makefile.in由Makefile.am的automake 1.11.1生成。

因此,您看到的Makefile.in可能是“手动”编辑的。

Makefile.in看起来像普通的Makefile,但通常它希望由configure脚本完成(例如,用户在不同目录中的库的位置)。

Automake使用Makefile.am来构建这样的Makefile.in。 如果制作你正在使用的软件包的开发人员已经有了Makefile并且编写了一个Makefile.am,那就太费劲了,他们只是将它转换为Makefile.in。