Ответ 1
Самое простое решение - использовать $\<newline>
для разделения строки (по крайней мере, если вы используете GNU Make):
VAR = w$\
o$\
r$\
d
all:
echo $(VAR)
Вывод будет "слово" без пробелов. Это связано с тем, что GNU Make заменит backslash-newline-whitespace одним пробелом, что делает присвоение VAR
эквивалентным:
VAR = w$ o$ r$ d
Из https://www.gnu.org/software/make/manual/html_node/Reference.html#Reference: "Знак доллара, за которым следует символ, отличный от знака доллара, открытых скобок или открытых скобок, обрабатывает этот единственный символ в качестве имени переменной. " Таким образом, пары $<space>
являются расширениями переменной, имя которой представляет собой один символ пробела. Поскольку эта переменная не определена по умолчанию, она будет расширена до пустой строки.
Обратите внимание, что переменная VAR
будет по-прежнему содержать пары $<space>
пока не будет расширена. В большинстве случаев это не имеет значения, но если ваш make файл зависит от использования $(value VAR)
для обработки базового (нерасширенного) значения, описанная выше методика может дать неожиданные результаты.
Что касается других идей, см. Мой ответ на аналогичный вопрос здесь: как я могу разбить определение переменной на несколько строк в Makefile без пробелов?
Более подробное описание вариантов продолжения строки можно найти в моей статье "GNU Make продолжений строки": http://drmikehenry.com/gnu-make-line-continuations/