如果未设置环境变量,会导致makefile错误?

时间:2020-10-27 17:17:23

标签: makefile environment-variables virtualenv gnu-make

如果未设置环境变量,我希望makefile崩溃。这是我到目前为止所拥有的:

ifneq ($(shell echo $${VIRTUAL_ENV:+True}),True)
$(error Looks like no virtualenv is active)
endif

它有效!

我想知道是否还有一种更优雅的方法可以做到这一点,也许直接用make而不是调用$(shell ...)

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用origin函数...

ifeq ($(origin VIRTUAL_ENV),undefined)
$(error Looks like no virtualenv is active)
endif

答案 1 :(得分:0)

这可能是最简单的选择,但没有像使用origin那样微调。

ifndef VIRTUAL_ENV
$(error Looks like no virtualenv is active)
endif

这里的一个警告是,您无法区分VIRTUAL_ENV是在Makefile中还是在环境中定义。

正如@KurtisRader在comment中指出的那样,这是可能的,因为环境var被隐式“导入”到make的命名空间https://www.gnu.org/software/make/manual/html_node/Environment.html中。