2009-03-05 12 views
0

我有時經歷過,如果任何特殊/控制字符($,^ M或其他)以某種方式進入makefile,那麼如果您嘗試使用該makefile生成-f Makefile,它會給出錯誤。爲什麼一些makefile中的特殊/控制字符在* nix中有時會在make過程中出錯?

我想知道,

1)任何人都經歷這樣的事情,如果是,是什麼原因導致這些錯誤?這些特殊字符有什麼特別之處?

+0

我不明白這是一個滿意的答案,因此我不認爲這是一個真正的問題。非常含糊,答案就像是「因爲這就是做什麼」。 – 2009-03-05 18:54:15

+0

@goldenmean:本地自定義呼叫爲了節省頭版上的空間而自動顯示您的作者身份,因此簽名也是不必要的。 – dmckee 2009-03-05 19:05:08

回答

1

UNIX對傳統的程序輸入並不是很寬容。自從第一次成立以來,這種態度並沒有太大改變。 ^M是回車,通常只有在Windows環境中編輯它們時纔會進入文件。 UNIX使用換行符(\ n,0x0a)作爲行終止符,許多工具都抱怨CR(\ r,0x0d),因爲他們沒有看到該字符甚至存在的原因。

$是一個不同的問題,因爲$是makefile語法的一部分。它用於指示makefile中的變量/常量。這些可以是上下文相關的,例如$<$*,或者名稱如$(CC)

您可以使用dos2unix實用程序來擺脫^M並通過\$擺脫美元符號。

儘管如此,還是有更多的特點。例如,要求用於目標的命令行需要由製表符縮進。據我所知,只有make不是很常用的解除了這個限制。

相關問題