我有时经历过,如果任何特殊/控制字符($,^ M或其他东西)以某种方式进入makefile,那么如果你尝试使用该makefile制作-f Makefile它会产生错误。
我想知道,
1。)有没有人经历过这样的事情,如果有,是什么导致了这些错误?这些特殊字符有什么特别之处?
答案 0 :(得分:1)
UNIX传统上对程序的输入不是很宽容。自首次成立以来,这种态度没有太大变化。 ^M
是回车符,在Windows环境中编辑它们时通常只会进入文件。 UNIX使用换行符(\ n,0x0a)作为行终止符,许多工具抱怨CR(\ r \ n,0x0d),因为它们没有看到该字符应该存在的原因。
$
是一个不同的问题,因为$
是makefile语法的一部分。它用于指示makefile中的变量/常量。这些可以是上下文的,例如$<
或$*
,或命名的$(CC)
。
您可以使用dos2unix
实用程序删除^M
并使用\$
转义美元符号。
尽管如此,仍有许多特点。例如,要求目标的命令行需要由制表符缩进。据我所知,只有make
没有被广泛使用,已经取消了限制。