Как остановить Makefile от расширения вывода моей оболочки? - PullRequest
0 голосов
/ 05 апреля 2019

Запустив это:

GITIGNORE_CONTENTS = $(shell while read -r line; do printf "$$line "; done < "$(.gitignore)")

all:
    echo $(GITIGNORE_CONTENTS)

Содержимое переменной GITIGNORE_CONTENTS является расширенной версией шаблонов игнорирования в моем файле .gitignore, т.е. myfile.txt вместо *.txt

Я использую это решение, потому что ни одно из решений по этому вопросу Создать переменную в make-файле, читая содержимое другого файла work.

Это решение работает внутри makeПравило печатать имена файлов, но не помещать их в переменную:

all:
    while read -r line; do \
        printf "$$line "; \
    done < ".gitignore"
    echo $(GITIGNORE_CONTENTS)

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Это проблема расширения по шаблону оболочки, а не марки.Учтите это,

GITIGNORE_CONTENTS:=$(shell cat .gitignore)

.PHONY: all
all:
    echo "$(GITIGNORE_CONTENTS)"
    # or alternatively:
    #/bin/echo $(GITIGNORE_CONTENTS)
0 голосов
/ 06 апреля 2019

Запустив это:

GITIGNORE_CONTENTS = $(shell while read -r line; do printf "$$line "; done < ".gitignore")

all:
    echo "$(GITIGNORE_CONTENTS)"

Со следующим .gitignore файлом:

*.txt
*.var
# Comment
*.xml
*.html

Правильно выводит:

echo "*.txt *.var # Comment *.xml *.html "
*.txt *.var # Comment *.xml *.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...