Почему некоторые специальные / контрольные символы в make-файле на * nix иногда дают ошибки во время make? - PullRequest
0 голосов
/ 05 марта 2009

Иногда я сталкивался с тем, что если какой-либо специальный / управляющий символ ($, ^ M или что-то еще) каким-либо образом попадает в make-файл, то, если вы попытаетесь создать -f Makefile, используя этот make-файл, он выдаст ошибки.

Я хочу знать,

1.) Кто-нибудь испытывал что-то подобное, и если да, то что вызывает эти ошибки? Что особенного в этих специальных символах?

1 Ответ

1 голос
/ 05 марта 2009

UNIX традиционно не очень простителен для ввода в программы. Это отношение не сильно изменилось с момента его первого появления. ^M - возврат каретки, который обычно попадает в файлы только при редактировании их в средах Windows. UNIX использует перевод строки (\ n, 0x0a) в качестве ограничителя строки, и многие инструменты жалуются на CR (\ r, 0x0d), так как не видят причины, по которой этот символ должен существовать.

$ - это другая проблема, поскольку $ является частью синтаксиса make-файла. Он используется для указания переменных / констант в make-файлах. Это могут быть контекстные, например $< или $*, или именованные, например $(CC).

Вы можете использовать утилиту dos2unix, чтобы избавиться от ^M и экранировать знаки доллара с помощью \$.

Тем не менее, есть и другие особенности. Например, требование, чтобы командные строки для целей должны иметь отступ с помощью символа табуляции. Насколько мне известно, только make не очень широко используются, сняли это ограничение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...