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

Clo*_*boy 7 make makefile

例如,如果我正在开发一个仅限前端的网站,我可能有几个CoffeeScript文件、几个Sass文件、几个 HTML 文件和一些图像。

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

这一切似乎都不是特别复杂,但我看到有几个人为此使用makefile

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

dmc*_*ten 6

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

  • 正如Ignacio 所说, make 具有并行构建意识。使用-j旗帜。

  • 如果您正确表达了您的依赖关系,则 make 永远不会重建不需要它的东西。当然,你可以在 bash 脚本中得到它,但这意味着增加脚本的复杂性(我必须阅读手册页来记住如何),而 make 已经知道这一点。

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

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

如果您可以编程(或多或少),您就可以管理 make(起初认为该语言可能有点奇怪)。