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

Syntax Makefile空白语法背后的原因是什么?,syntax,makefile,Syntax,Makefile,在伦敦的SO DevDay上,迈克尔·斯帕克斯(Michael Sparks)对彼得·诺维格(Peter Norvig)的Python拼写检查器进行了精彩的演练,之后我将再次访问Python 他强调的一点是Python有多干净。不要用大括号来表示作用域,而是用空格来表示块作用域 这让我思考。我想知道这是否是在构建make目标所需的命令前面添加制表符缩进的原因 这是同一个清晰度方面吗?要容易区分目标和构建目标所需的命令?我认为Makefiles犯了一个错误,即坚持缩进只使用一个制表符。允许空间有什

在伦敦的SO DevDay上,迈克尔·斯帕克斯(Michael Sparks)对彼得·诺维格(Peter Norvig)的Python拼写检查器进行了精彩的演练,之后我将再次访问Python

他强调的一点是Python有多干净。不要用大括号来表示作用域,而是用空格来表示块作用域

这让我思考。我想知道这是否是在构建make目标所需的命令前面添加制表符缩进的原因


这是同一个清晰度方面吗?要容易区分目标和构建目标所需的命令?

我认为Makefiles犯了一个错误,即坚持缩进只使用一个制表符。允许空间有什么害处?没有精度损失,因为shell命令无论如何都不能有效地以空格开头,目标行和命令行之间也没有混淆。

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

为什么选择第1列中的选项卡?Yacc是新的Lex是全新的。我也没有试过,所以我想这是一个学习的好借口。在第一次尝试Lex后,我对pattern newline选项卡做了一些简单的操作。它起作用了,它留下来了。几周后,我有了大约12个用户群,其中大多数是朋友,我不想搞砸我的嵌入式基础。遗憾的是,剩下的就是历史了。
--斯图尔特·费尔德曼
@内德,我同意你的看法。我想通过把它做成“你应该付账!”我们不必担心像那些关于成为蟒蛇的讨论!(:@Ned,我认为makefiles接受了不止一个空格,并且不限于一个且仅限于一个制表符。makefiles要求配方行以制表符开头。制表符之后可以有任意多个其他制表符或空格。使用任何空格,而不仅仅是制表符,都会破坏数千个makefiles,因为许多makefiles缩进变量assignments或其他非命令行,带有空格。仅供参考,较新版本的GNU make定义了一个变量
。RECIPEPREFIX
,您可以使用该变量从默认值(选项卡)更改配方行的引入字符这使得你的makefile的可移植性降低,但可能更具可读性。我总是有点担心重新标记10k+用户…你能对此帖子给出一些反馈吗?@Pavel,刚刚发布了一个答案。顺便说一句,评论是+1。