Make的流行原因与其他替代方案相比是什么?

10

有哪些因素使得陈旧的Make(带或不带makefile生成工具)仍然是主流的编译工具?是替代工具自身存在缺陷导致其没有被广泛采用,还是宣传不足,或者Make本身的某些特性导致其仍然占据主要位置?

尽管Make存在许多弱点和处理大型项目的困难 (例如参见http://freshmeat.net/articles/what-is-wrong-with-make),但它似乎仍然比较新的改进后的替代工具如SconsJamRakeCook等得到了更广泛的应用。

这些替代工具是否具有可量化的优势,还是“市场份额”主要取决于团队领导的意见和经验?


2
"Shipping is a feature"的意思是,交付是一项功能。一旦某个东西成为“标准”,即使它提供了一些优势,切换到新的东西也需要很多努力。很可能,已经使用make的项目将永远不会切换 - 并且在同一软件公司中使用两种完全不同的构建工具对开发人员来说几乎没有任何激励。 - Anon.
1
纯粹的make并没有被很多大型项目所使用。Autotools是无处不在的现有工具,提供可移植性和灵活性。 - Tobu
你最近看过联邦政府了吗?如果以美国政府为例子,为什么事情从未有进展就很容易看出原因了。 - orokusaki
8个回答

9

普及性:我喜欢Make,因为我可以相信它会在我需要的地方可用,即已安装或易于安装在目标计算机上。


7

它广泛可用,文档详细,简洁而强大 + 最重要的是 - 没有XML!

我使用它已经接近15年了,仍然没有找到更好的东西。我用它做过最酷的事情是让一个主makefile动态生成子项目的makefile。


2
谢谢!其他新工具的XML方面对我来说是一个真正的问题。在16年的C/C++之后,我已经使用Ruby工作了3年,虽然我喜欢那个环境,但Rake等没有超过make。在Java世界中,Ant似乎对于它所做的事情来说太啰嗦了。 - Chris McCauley

5
关于您的问题,是什么力量使得它保持活跃...这是习惯的力量。

是的,“make”有点像BASIC或Fortran。 - Jason S
对于“喜欢”的某些定义,它不包括在标准命令下运行,使用标准文件格式,在任何东西上并行构建和部署您的项目,从标准Unix框到现代超级计算机再到1980年代的家用计算机。 - user1024732

4
  • 简单性 - 容易完成简单的事情
  • 普及性 - 您的系统上有某个版本
  • 速度 - 对于大多数任务来说足够快
  • 表现力 - 相当匹配工作需求
  • 非显而易见的复杂性 - 主要是大型项目会暴露问题

这些特性在其他构建工具中也可以找到。也许只是没有一个工具拥有所有这些特性? - DarenW
2
@DarrenW - “ubiquity”这个词在其他构建工具中是找不到的。 - Chris Lutz

1
我们在一个相对较大的项目中使用了Scons来替换make,并发现它是一个相当灵活的系统,使我们能够进行一些非常必要(但非常不幸)的黑客技巧,以便按照我们需要的方式构建东西。另外,make 是很奇怪的。

是的,似乎所有替代make和make本身,在大多数较大的项目中都需要进行一些破解。自从提出这个问题以来,我已经开始使用scons开发一个复杂的项目,将其转换为cmake。Cmake更少麻烦,更少破解,但仍然有一些。奇怪性质不会缺席于任何软件工具或语言中,我不确定这是好事(防止无聊)还是坏事(混淆,出人意料的错误)。 - DarenW

1

它在许多平台上的可用性可能会有所帮助。如果要为多个平台编写产品,知道它将始终存在是一个优点。在构建自己的项目之前,必须将构建工具移植到新平台上是一件令人头疼的事情。


1

嗯,我从未使用make作为构建系统。

除此之外,这是一种独特的数据流编程语言,您可以描述一组节点,每个节点都有特定的用途,描述它们的行为,并让管理器处理和控制它们之间的数据流。


0

我认为要看到大规模转向另一种工具,首先必须创建一个显著更好的工具。为了影响变革,Linux发行版或主要软件包之一必须切换到它,并可能保留旧工具以保持兼容性。我预计新的构建工具将能够生成传统的makefile。Linux已经展示了他如何通过Git解决源代码控制系统的问题。我有一个相当不错的预感,他可以想出一些非常酷的东西并与Git集成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接