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

时间:2009-03-05 18:48:54

标签: makefile

我有时经历过,如果任何特殊/控制字符($,^ M或其他东西)以某种方式进入makefile,那么如果你尝试使用该makefile制作-f Makefile它会产生错误。

我想知道,

1。)有没有人经历过这样的事情,如果有,是什么导致了这些错误?这些特殊字符有什么特别之处?

1 个答案:

答案 0 :(得分:1)

UNIX传统上对程序的输入不是很宽容。自首次成立以来,这种态度没有太大变化。 ^M是回车符,在Windows环境中编辑它们时通常只会进入文件。 UNIX使用换行符(\ n,0x0a)作为行终止符,许多工具抱怨CR(\ r \ n,0x0d),因为它们没有看到该字符应该存在的原因。

$是一个不同的问题,因为$是makefile语法的一部分。它用于指示makefile中的变量/常量。这些可以是上下文的,例如$<$*,或命名的$(CC)

您可以使用dos2unix实用程序删除^M并使用\$转义美元符号。

尽管如此,仍有许多特点。例如,要求目标的命令行需要由制表符缩进。据我所知,只有make没有被广泛使用,已经取消了限制。