在几个项目中,我看到了没有 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 是由自动制作的。此外,由于 Makefile.am 是一个用户编写的文件,我不会想到它会从代码存储库中省略。在 bash 源代码树中,Makefile.in 太大而无法手写,dtach 中的 Makefile.in 看起来也很生成。在这两个项目中,Makefile.in 是如何产生的?
libtool
和automake
自动工具可以彼此独立使用(或根本不使用),具体取决于您需要autoconf
做什么。因此,不需要使用 automake
来生成Makefile.in
。
automake
工具还明显地输出它已被使用:
# Makefile.in 由 Automake 1.11.1 从 Makefile.am 生成。
因此,您看到的Makefile.in
很可能是"手动"编辑的。
Makefile.in 看起来像一个常规的 Makefile,但通常它希望由配置脚本完成(例如,用户在不同目录中的库的位置)。
Automake 使用 Makefile.am 来构建这样的 Makefile.in。如果制作您正在使用的包的开发人员已经有一个 Makefile,并且为它编写一个 Makefile.am 太费力了,他们只是将其转换为 Makefile.in。