为什么*nix上的makefile中的某些特殊/控制字符在make期间有时会出错?

为什么*nix上的makefile中的某些特殊/控制字符在make期间有时会出错?,makefile,Makefile,我曾经体验过,如果任何特殊/控制字符($,^M或其他字符)以某种方式进入makefile,那么如果您尝试使用该makefile生成-f makefile,则会出现错误 我想知道 1.)是否有人经历过类似的情况,如果有,是什么原因导致这些错误?这些特殊字符有什么特别之处?UNIX传统上对程序的输入不是很宽容。这种态度从一开始就没有太大改变^M是回车符,通常仅在Windows环境中编辑文件时才会进入文件。UNIX使用换行符(\n,0x0a)作为行终止符,许多工具抱怨CR(\r,0x0d),因为它们看

我曾经体验过,如果任何特殊/控制字符($,^M或其他字符)以某种方式进入makefile,那么如果您尝试使用该makefile生成-f makefile,则会出现错误

我想知道


1.)是否有人经历过类似的情况,如果有,是什么原因导致这些错误?这些特殊字符有什么特别之处?

UNIX传统上对程序的输入不是很宽容。这种态度从一开始就没有太大改变
^M
是回车符,通常仅在Windows环境中编辑文件时才会进入文件。UNIX使用换行符(\n,0x0a)作为行终止符,许多工具抱怨CR(\r,0x0d),因为它们看不出该字符存在的原因


$
是另一个问题,因为
$
是makefile语法的一部分。它用于指示makefiles中的变量/常量。这些可能是上下文相关的,比如
$我不知道什么是令人满意的答案,因此我认为这不是一个真正的问题。非常模糊,答案是“因为make就是这么做的”。@goldenmeans:Local custom要求在头版上省去称呼以节省空间,并且自动显示您的作者,因此,签准也是不必要的。@Johannes Rossel:这些对makefile文本格式的特殊要求会在man Make或info Make或其他Make帮助中解释吗?这些通常应该被记录下来,是的。但大多数编写makefile的人都知道它们:)