Учитывая Makefile, как показано ниже, как я могу установить значение FOOBAR
в foo /home/scott
, используя $MAKEFLAGS
?
FOO=foo
FOOBAR=$(FOO) bar
$(info $$FOOBAR is [$(FOOBAR)])
Я знаю, что могу сделать
$ make FOOBAR="\$(FOO) $HOME"
$FOOBAR is [foo /home/scott]
И это прекрасно работает
$ MAKEFLAGS="FOOBAR=foo\ $HOME" make
$FOOBAR is [foo /home/scott]
Интересно, что это не так хорошо работает
$ MAKEFLAGS="FOOBAR='foo $HOME'" make
$FOOBAR is ['foo]
Моя цель примерно такая, но постарайся, как только смогу, этого не добиться
$ export MAKEFLAGS="FOOBAR=\$(FOO)\ $HOME" # <-- this line is wrong
$ make
$FOOBAR is [foo /home/scott] # <-- not the real output
Фактический вывод:
$ export MAKEFLAGS="FOOBAR=\$(FOO)\ $HOME"
$ make
$FOOBAR is [/home/scott]
Как использовать переменную для замены в $MAKEFLAGS
переопределении?
(Стандартное решение POSIX - это предпочтительнее, но будет работать только решение GNU.)
(Зачем мне это нужно? Я хочу переопределить переменную, используемую Python, которую я собираю с помощью python -компиляции pyenv. Я нашел этот python -build выставляет $MAKE_OPTS
, который сработал, но теперь мне любопытно, почему мои предыдущие попытки потерпели неудачу.)