Makefile: Использование символа разрыва строки / продолжения: `\`, в общем случае приемлемо или нет? - PullRequest
0 голосов
/ 14 октября 2018

Давайте предположим, что для этого вопроса мы используем GNU Make в Linux.

Как обычный сценарист сценариев оболочки, сценарии Makefile кажутся мне немного странными .

В любом случае, это основано на мнении, так что прямо к моему вопросу:

Я нашел способ для меня, чтобы писать Makefiles немного больше, как сценарии оболочки.

Это использование символа разрыва строки / продолжения: \

Пример начала моего Makefile:

DESTDIR ?=
PREFIX ?= /usr/local/bin
install_path := $(DESTDIR)$(PREFIX)
encrypt_script := encrypt-file-aes256
decrypt_script := decrypt-file-aes256
distrib_name := openssl-encryption
this_file := $(lastword $(MAKEFILE_LIST))

.PHONY: check

check: $(encrypt_script) $(decrypt_script)
    @tput bold; tput setaf 3; echo Target: $@; echo; tput sgr0
    @if [ -f SHA512SUM ]; then \
        ( sha512sum --check SHA512SUM && \
            ( tput bold; tput setaf 2; echo; echo "Ok. You may use 'sudo make install' or '(sudo) make install PREFIX=SomeDir' command now."; tput sgr0 ) || \
            ( tput bold; tput setaf 1; echo; echo "ERROR: Files hash sum mismatch!"; echo; tput sgr0; exit 1 ) \
        ) \
    else \
        $(MAKE) --file=$(this_file) SHA512SUM; \
    fi

Полностью ли я пересек линию или это общее понятие?приемлемо?

Чтобы не ограничиваться мнением, пожалуйста, избегайте ваших личных предпочтений и цитируйте источники.

Вот только фрагмент кода.Вы можете найти весь Makefile без этих изменений здесь .

1 Ответ

0 голосов
/ 14 октября 2018

Разбивать сложные рецепты по нескольким строкам - хорошая и здоровая практика;но чрезмерно длинные или сложные вызовы сценария оболочки являются признаком того, что вы делаете это неправильно.Может быть, разбить логику на отдельный скрипт или переосмыслить ваш подход.

Например, я просто реорганизовал бы это в

install:
    sha512sum --check SHA512SUM
    : the rest of your exisiting install target here

Это не удастся, если отсутствует SHA512SUM, илиесли настоящая проверка не удалась.

Если вы хотите, чтобы цветной выводимый человеком текст или анимированные хомяки, когда это происходит, напишите скрипт-обертку.

...