Makefile空格语法背后的原因是什么?

时间:2009-11-18 12:04:51

标签: syntax makefile

在迈克尔·斯帕克斯(Michael Sparks)在伦敦SO DevDay上精彩演绎Peter Norvig的Python拼写检查后,我正在重新审视Python。

他强调的一点是如何看待干净的Python。没有用于范围的大括号,而是使用空格来表示块范围。

这让我思考。我想知道这是否是构建make目标所需命令的TAB缩进背后的原因。

清晰度是否相同?为了容易区分目标和构建目标所需的命令?

2 个答案:

答案 0 :(得分:48)

来自“Unix编程的艺术”引用了这句话:

为什么第1列中的选项卡? Yacc是新的,Lex是全新的。我也没试过,所以我认为这是一个很好的学习借口。在让我自己第一次刺伤Lex之后,我只是使用newline-tab模式做了一些简单的事情。它奏效了,它留了下来。然后几周后我的用户数量大约有十几个,其中大多数是朋友,而且我不想搞砸我的嵌入式基础。遗憾的是,其余的都是历史 - 斯图尔特费尔德曼

答案 1 :(得分:3)

我认为Makefiles错误地坚持只有一个制表符来缩进。允许空间的危害是什么?没有精度损失,因为无论如何shell命令都无法以空格开头,并且目标行和命令行之间没有混淆。