LINUX.ORG.RU

Make и обратный слэш.


0

0

Один и тот же проект нормально собирается в Mandrake, но не хочет собираться в Mandriva 2008. Выдает ошибку make-синтаксиса.

Вот соответствующий фрагмент make-файла:

clean: @for i in $(BROWSE_DIRS); do\ $(MAKE) $$i clean;\ done

А вот сообщение об ошибке:

/bin/sh: -c: line 1: syntax error near unexpected token `domake' /bin/sh: -c: line 1: `make -C $i clean;\' make: *** [clean] Error 2

То есть, я так понимаю, в Мандриве обратный слэш не только переходит на другую строку, но и "съедает" все пробелы и табы, так что do и последующий $(MAKE) сливаются в единый "domake". Если записать указанный фрагмент в одну строчку @for i in $(BROWSE_DIRS); do $(MAKE) $$i clean; done то сборка продолжается, но появляются аналогичные ошибки уже в make-файлах, находящихся во вложенных директориях. Это можно как-то излечить? А то очень не хочется редактировать все make-файлы в проекте. Много их, да и некрасивы длинные строчки


Че-то переносы строки не отобразились. В общем, после каждого бэкслэша должен быть переход на новую строку

illyge
() автор топика
Ответ на: комментарий от alex_custov

О, все гениальное просто. Действительно, с пробелом фурычит, спасибо. Интересно все же, почему в мандрейке нормально работает и без пробела

illyge
() автор топика
Ответ на: комментарий от illyge

A non-quoted backslash (\) is the escape character. It preserves the literal value of the next character that follows, with the exception of <newline>. If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).

alex_custov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.