对于简单的项目,makefile 比“普通” bash 脚本提供了什么?

对于简单的项目,makefile 比“普通” bash 脚本提供了什么?

例如,如果我正在开发一个只有前端的网站,我可能会有几个CoffeeScript文件,若干萨斯文件、几个 HTML 文件和一些图像。

CoffeeScript 文件需要编译为 JavaScript,Sass 文件需要编译为 CSS,并且这些新文件需要最小化。图像需要删除其元数据。所有生成的文件都需要移动到具有其自己结构的新目录中。

这些看起来都不是特别复杂,但我见过很多人使用生成文件为了这。

我是不是太不愿意学习如何使用 makefile 了?与简单的 bash 脚本相比,它们有什么优势?

答案1

所以,你说得对,这不是一个艰巨的任务,make 提供的优势现在

  • 作为伊格纳西奥说使之能够感知并行构建。使用-j标志。

  • 如果您正确地表达了依赖关系,make 就不会重建不需要它的东西。当然,您可以在 bash 脚本中实现这一点,但这意味着增加了脚本的复杂性(我必须阅读手册页才能记住怎么做),而 make 已经知道这一点。

  • 您可以定义通用规则(后缀规则(旧式)或模式规则(GNU make 中首选)),这些规则适用于所有需要从 Foo 类型构建的 Bar 类型的文件。同样,循环将在 bash 中处理该问题,但 make 已经知道如何执行该操作。

大的优点是:如果任务变得更加复杂,你的 makefile 会缓慢而简单地增长,而你的脚本可能会意外膨胀。

如果你会编程(或多或少会编程)你可以管理(一开始觉得语言可能有点奇怪)。

答案2

Makefile 可以轻松实现并行化。由于 make 能够感知依赖关系,因此它可以安排作业,从而尽可能高效地利用系统上的所有核心。

相关内容