Spec-Zone.ru › GNU Make

Разбиение длинных строк

Файлы make используют синтаксис, основанный на «строках», в котором символ новой строки является специальным и обозначает конец оператора. GNU make не имеет ограничения на длину строки оператора, до предела памяти вашего компьютера.

Однако трудно читать строки, которые слишком длинные, чтобы отображаться без обрезки или прокрутки. Поэтому вы можете отформатировать свои файлы make для удобочитаемости, добавив новые строки в середину оператора: вы делаете это, экранируя внутренние новые строки обратной косой чертой (\) символом. Там, где нам нужно сделать различие, мы будем называть «физические строки» как одну строку, заканчивающуюся новой строкой (независимо от того, экранирована она или нет), а «логическую строку» - как полный оператор, включающий все экранированные новые строки до первой неэкранированной новой строки.

Способ, которым обрабатываются комбинации обратной косой черты/новой строки, зависит от того, является ли строка оператора строкой рецепта или нет. Обработка обратной косой черты/новой строки в строке рецепта обсуждается позже (см. Разбиение строк рецепта).

Вне строк рецептов обратная косая черта/новая строка преобразуются в один символ пробела. После этого все пробелы вокруг обратной косой черты/новой строки конденсируются в один пробел: это включает все пробелы перед обратной косой чертой, все пробелы в начале строки после обратной косой черты/новой строки и любые последовательные комбинации обратной косой черты/новой строки.

Если определен специальный целевой .POSIX , то обработка обратной косой черты/новой строки немного изменяется в соответствии с POSIX.2: во-первых, пробелы перед обратной косой чертой не удаляются, а во-вторых, последовательные обратные косые черты/новые строки не конденсируются.

Разбиение без добавления пробелов

Если вам нужно разбить строку, но вы не хотите добавлять пробелы, вы можете использовать хитрость: замените ваши пары обратной косой черты/новой строки на три символа: знак доллара, обратная косая черта и новая строка:

var := one$\
       word

После make удаляет обратную косую черту/новую строку и конденсирует следующую строку в один пробел, это эквивалентно:

var := one$ word

Затем make выполнит расширение переменных. Ссылка на переменную «$ » относится к переменной с односимвольным именем « » (пробел), которая не существует, и поэтому расширяется до пустой строки, давая окончательное присваивание, которое эквивалентно:

var := oneword

Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API