Отправить env в целевой файл makefile

Я пытаюсь установить env var, который является git sha1 commit для цели makefile. Я устанавливаю много env vars, и только это терпит неудачу без такой ошибки файла или каталога. Я чертовски сбит с толку. Пожалуйста, помогите мне передать это как env var моей цели makefile. Это то, что я делаю в начале своего Makefile.

SHA1 := $(shell git log | head -1 | awk '{print }')
BUILD_STAMP := $(shell date +%s)
export SHA1
export BUILD_STAMP

и одна из целей makefile имеет такой вид.

target: dep-target
     env 
              VAR1=$(VAR1) 
              GIT_SHA1=$(SHA1) 
     my-command for the target

Это не удается с

env: a6d23d14b0fbb613e567cc647ebfe2808ce47af1: No such file or directory

пожалуйста, помогите мне это как ОКР ВАР.

13
задан Medhamsh
10.04.2023 19:00 Количество просмотров материала 2755
Распечатать страницу

2 ответа

 VAR1=$(VAR1)
 GIT_SHA1=$(SHA1)

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

заменить фигурными скобками, т. е. GIT_SHA1=${SHA1} и вы будете получать переменной присваивания.

3
отвечен Hannu 2023-04-12 02:48

У меня недостаточно репутации, чтобы прокомментировать неправильный ответ @Hannu (фигурные и круглые скобки эквивалентны в Make).

чтобы отладить подобные вещи, создайте отдельный короткий Makefile и попробуйте сделать следующее:

SHA1 := $(shell git log | head -1 | awk '{print }')
all:
        echo "$(SHA1)"

Это показывает, что происходит, если SHA1 получает всю первую строку вывода журнала git, а не только SHA, и это включает пробелы. Расширенная команда env будет иметь недопустимый синтаксис.

в этом случае, знак доллара в команда awk должна быть удвоена (выведите $$2), так что расширяется до буквального знака доллара, а не как пустая переменная $(2).

1
отвечен Curt 2023-04-12 05:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх