Automake 为什么不';汽车制造和自动工具会失去GNU制造的能力吗?

Automake 为什么不';汽车制造和自动工具会失去GNU制造的能力吗?,automake,Automake,我对GNU Make非常有经验,但对autotools完全陌生。通过阅读一些教程,我了解到自动工具是跨多个体系结构标准化makefile目标和构建的一种方法。这是一件好事,因此开源发行版的用户可以始终以相同的方式构建和安装它们 GNUMake非常强大和灵活:任何shell命令都可以用来构建目标,并且目标对先决条件的依赖关系可以用许多高效和灵活的方式表示 通过将Makefile转换为Makefile.am,可以将Makefile的所有功能转移到基于automake的系统中吗?我在教程中找到了如下语

我对GNU Make非常有经验,但对autotools完全陌生。通过阅读一些教程,我了解到自动工具是跨多个体系结构标准化makefile目标和构建的一种方法。这是一件好事,因此开源发行版的用户可以始终以相同的方式构建和安装它们

GNUMake非常强大和灵活:任何shell命令都可以用来构建目标,并且目标对先决条件的依赖关系可以用许多高效和灵活的方式表示

通过将
Makefile
转换为
Makefile.am
,可以将
Makefile
的所有功能转移到基于automake的系统中吗?我在教程中找到了如下语句:

规则如

%.foo: %.bar
不可移植,不能在
Makefile.am
中使用。因此,程序员必须在模式规则足够的地方编写显式规则,这无疑会更加耗时,而且维护性较差

而且,在我看到的示例
Makefile.am
文件中,我从未看到过任何复杂变量计算或函数

那么,如果automake限制了GNU Make的结构,那么它如何能够以与GNU Make相同的效率、编程速度和可维护性构建相同的软件呢


我想是的,我只是看不到什么明显的东西

我不是很精通自动工具,也不是自动工具的超级粉丝,但我的理解是:

自动工具的目的是提高可移植性,例如对于没有GNU可用的系统。示例包括HP-UX、Solaris、IRIX和BSD系列。autotools用户可以构建始终具有恒定指令序列的程序:

./configure
make
这里,
/configure
是一个
/bin/sh
脚本,它是在开发人员的系统上生成的,并且是可移植的,因此可以在各种系统上运行。生成的
Makefile
是特定于平台的,包括处理特定于平台的需求/问题。另外,
/configure
生成一个
config.h
文件,该文件允许C代码对某些库的可用性/不可用性做出反应,以生成传递给
/configure
的选项

上的Wikipedia页面包含了整个过程中涉及的文件的精美图表:

在开发者系统上预先生成
configure
Makefile.in
之前的所有内容,在构建(用户)系统上生成
config.status
及以下内容

今天的自动工具有什么相关性?显然,它们仍在许多项目中使用。然而,非Linux UNIX操作系统的重要性已经大大降低。那些仍然存在的都有GNU可用。正如您所说,gnumake具有数量惊人的特性,并且可以非常轻松地编写
Makefile
s,自动跟踪依赖项并处理可用/缺失的库

因此,我个人基于GNU make编写了我所有的
make
系统,我很高兴我已经多年没有接触过autotools了