Создание многострочного эхо-блока в Makefile - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь написать простой Makefile для проекта с некоторым ascii art в качестве заголовка, но у меня продолжают появляться ошибки при его запуске. Есть ли способ добавить многострочные эхо-операторы вместо @echoing каждой строки? Это может не дать мне ошибок, что-то вроде BOF - EOF вещь?

Что у меня есть;

.PHONY: all

info: header

header:
    clear
    @echo "___________              __   "
    @echo "\__    ___/___   _______/  |_ "
    @echo "  |    |_/ __ \ /  ___/\   __\"
    @echo "  |    |\  ___/ \___ \  |  |  "
    @echo "  |____| \___  >____  > |__|  "
    @echo "             \/     \/        "

Когда я запускаю его, я получаю следующую ошибку;

___________              __
\__    ___/___   _______/  |_
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [header] Error 2

1 Ответ

2 голосов
/ 18 октября 2019

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

.PHONY: all

info: header

define HEADER
___________              __
\__    ___/___   _______/  |_
  |    |_/ __ \ /  ___/\   __\\
  |    |\  ___/ \___ \  |  |
  |____| \___  >____  > |__|
             \/     \/
endef
export HEADER

header:
    clear
    @echo "$$HEADER"

Примечание: вам все еще нужно удвоить \ в конце строк текстастрока, чтобы избежать их интерпретации как продолжения строки.

...