Что означают эти строки в Makefile? - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно быстро получить Makefile, чтобы понять некоторые проблемы, которые у меня возникают.Я натолкнулся на эти строки, и я хочу убедиться, что я правильно понимаю их использование здесь.

cp $< $@
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@

Для ясности, я знаю, что sed используется для подстановки (глобальной?) Строки здесь, но использование специальных символов bash делает это, возможно, более запутанным, чем должно быть.

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

1 Ответ

2 голосов
/ 09 июля 2019

Это GNU Создать автоматические переменные :

$@ Имя файла цели правила.Если цель является членом архива, тогда $ @ - это имя файла архива.В правиле шаблона, имеющем несколько целей (см. Введение в правила шаблона), «$ @» - это имя цели, вызвавшей запуск рецепта правила.

$< Имя первой предпосылки.Если цель получила свой рецепт из неявного правила, это будет первым предварительным условием, добавленным неявным правилом (см. Неявные правила).

См. , какие цели и предварительные условия .


sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@

Заменяет все вхождения {{DEPLOY}} на https://example.com/ в $@.


Собирая все вместе, более простая и надежная версия

cp $< $@
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@

- это:

sed -e 's#{{DEPLOY}}#https://example.com/#g' $< > $@ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...