给定一个像下面这样的 Makefile,我该如何设置FOOBAR
usingfoo /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-only 解决方案也可以。)
(为什么我需要这个?我想覆盖 Python 使用的一个变量,我正在使用 pyenv 的 python-build 构建它。我发现 python-build 暴露$MAKE_OPTS
了它,但现在我很好奇为什么我以前的尝试有失败的。)