Makefile ifeq не работает - PullRequest
       4

Makefile ifeq не работает

0 голосов
/ 04 декабря 2018

Я новичок в makefile и считаю, что использовать findstring довольно сложно.Вот мой код:

ZSHRC="$HOME/.zshrc"

install:
    ifneq($(findstring "CADANSE",$(ZSHRC) a),)
        @echo "done $(a)"
    endif

Куда бы я ни перемещал запятую, чаще всего появляются ошибки:

синтаксическая ошибка рядом с неожиданным токеном `, '

Я убедился, что в моих вкладках 4 правильных пробела, и попробовал пару учебников, чтобы заставить его работать, но безрезультатно.

Мне нужно проверить, находится ли строка BEGIN.CADANSE в .zshrc, потому что она загружает дополнительную оболочкуметоды.Я пытаюсь сделать установщик для него, makefile не является обязательным, но я должен был исследовать его.

Спасибо за любую помощь.

ОС является последней версией MacOSX, и оболочкао-о-о-о-о.

ОБНОВЛЕНИЕ - Решение

Для решения моей проблемы я сейчас использую патч вместо grep:

installcadanse: docs
        @cat ~/.zshrc lib/Cadanse/template/dot-rc | diff -u ~/.zshrc - > PATCH_CADANSE ; patch ~/.zshrc PATCH_CADANSE
        @source ~/.zshrc ; echo "Cadanse should be installed in your shell. Please check ~/.zshrc for mentions of Cadanse."

1 Ответ

0 голосов
/ 04 декабря 2018

В общем, что вы подразумеваете под " мои вкладки - это 4 правильных пробела "?Часть действия правила должна иметь отступ для вкладки.Не 4 пробела, не 8 пробелов, а буквальный символ табуляции.

Сначала команды, связанные с правилом, передаются в оболочку (после раскрытия переменной).Если вы хотите проверить условие в действии, вы должны написать для него команду оболочки, а не команду make.

Во-вторых, findstring выполняет простой поиск по подстроке.Он не открывает никаких файлов и не читает их содержимое.

В-третьих, я уверен, что "$HOME/.zshrc" в make означает "${H}OME/.zshrc" (то есть будет искать переменную с именем H).Кроме того, эти кавычки взяты буквально.

Чтобы найти файл для данной строки в сценарии оболочки, вы можете использовать grep:

.PHONY: install

install:
        @if grep -q CADANSE ~/.zshrc; then \
            echo done; \
        fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...