【发布时间】:2020-08-11 18:06:41
【问题描述】:
我发现 makefile 非常有用,每个配方的标题
<target> : [dependencies]
很有帮助。在配方中,前缀 @ 和 - 以及自动定义的变量(如 $@ 和 $?)很有用。然而,除此之外,我发现编写实际配方的方式很奇怪而且没有帮助。 StackOverflow 上有很多关于“如何在 makefile 中执行此操作”的问题,这些问题在 bash 中很简单(或至少更熟悉)。
配方内容不只是解释为常规 shell 脚本有什么原因吗?阅读手册页,似乎有许多工具具有与 shell 脚本等效的功能,但语法不同。我最终指定 .ONESHELL 并用 $$ 转义 $,或者有时当我不知道如何使它在 makefile 中工作时,我只是从配方中调用一个脚本。我的问题是这是否只是不幸的设计,还是 makefile 的重要特性迫使它们以这种方式设计?
【问题讨论】:
-
Make 和 bash 都是简洁的语言,但它们的设计根本不同(例如 bash 是程序性的,Make 不是)。在它们之间设计一个不会阻碍任何一个的干净界面是非常困难的。