【发布时间】:2014-08-07 10:26:32
【问题描述】:
我正在尝试做一件简单的事情:
TMPDIR ?= /tmp
test:
@echo $(TMPDIR)
如果我运行,这会起作用:
$ make test
/tmp
如果我运行它也可以:
$ make test -e TMPDIR=~/tmp
/home/user/tmp
我该怎么做才能让它也适用于:
$ TMPDIR=~/tmp make test
/home/user/tmp
【问题讨论】:
-
Erhm... 你有什么工作(如果你使用
?=并且你设置了环境变量,那么将使用环境变量的值)。究竟是什么问题(为什么你认为它不起作用)? -
也仅供参考,在 makefile 中为变量值添加引号通常不是一个好主意。
-
是的,我仔细检查了,我使用
TMPDIR ?= "/tmp"和echo $(TMPDIR)唯一的事情是不要忘记变量名周围的括号。 -
你对
-e的使用倒退了。-e表示允许环境变量覆盖在makefile中定义的变量,它们不会影响来自命令行参数的变量赋值。 -
对不起,纳蒂姆,但
?=确实工作。如果它没有按照您的意愿做,那么您上面的解释令人困惑,我们不理解您想要什么,或者您的真实环境中有一些东西没有反映在您的上面的问题中。
标签: bash shell makefile environment-variables