Невозможно переопределить целевую переменную c - PullRequest
2 голосов
/ 30 мая 2020

У меня такой Makefile:

print: var1=inside

print:
    @echo $(var1)

Когда я запускаю var1=outside make -e print. Я ожидал увидеть:

outside

Из-за :

Переменные, указанные в командной строке (и в среде, если параметр '-e' вступает в силу) будет иметь приоритет.

Но я получаю:

inside

Это правильный вывод?

1 Ответ

2 голосов
/ 30 мая 2020

Ожидается; Правильно это или нет, я полагаю, зависит от того, кого вы спрашиваете.

Параметр -e действует для «глобальных» переменных в make-файлах, но переменные с указанием цели c имеют приоритет над глобальными переменными .

Лично я считаю, что -e было ошибкой и никогда не должно было существовать. Но знаете, POSIX и все такое. Несмотря на то, что он существует, я рекомендую избегать его. Слишком легко полностью испортить вашу сборку запутанными и неожиданными способами.

ETA Ну, может, этого и не ожидали. Может это ошибка. Откуда вы взяли эту цитату? С этим предложением из 225-страничного документа трудно сказать ... ссылка или хотя бы название раздела были бы полезны.

...