makefile 中未设置环境变量
environment variable not set in makefile
我想在Makefile中触发单元测试和集成测试,我目前的实现是这样的:
all: unittest integration
unittest:
$(ECHO) @echo 'Running unittest'
@unset TYPE
@nosetests
integration:
$(ECHO) @echo 'Running integration test'
@export TYPE=integration
@nosetests
但是我在设置环境变量时遇到问题,当我 运行 make integration
时,如果我手动设置环境变量, TYPE
环境变量将不会被设置export TYPE=integration
,那么我运行 make unittest
,环境变量不会被取消设置。如何解决?
配方中的每个命令 运行 在单独的 shell 中。 运行s export TYPE
中的 shell 立即退出;那么下一个命令是 运行 在一个新的实例中,当然没有这个设置。
shell 具有在一个命令的持续时间内设置变量的特定语法;使用它。
all: unittest integration
unittest:
echo 'Running unittest'
TYPE= nosetests
integration:
echo 'Running integration test'
TYPE=integration nosetests
顺便说一句,你不应该为你自己的变量使用大写;这些名称保留供系统使用。
我想在Makefile中触发单元测试和集成测试,我目前的实现是这样的:
all: unittest integration
unittest:
$(ECHO) @echo 'Running unittest'
@unset TYPE
@nosetests
integration:
$(ECHO) @echo 'Running integration test'
@export TYPE=integration
@nosetests
但是我在设置环境变量时遇到问题,当我 运行 make integration
时,如果我手动设置环境变量, TYPE
环境变量将不会被设置export TYPE=integration
,那么我运行 make unittest
,环境变量不会被取消设置。如何解决?
配方中的每个命令 运行 在单独的 shell 中。 运行s export TYPE
中的 shell 立即退出;那么下一个命令是 运行 在一个新的实例中,当然没有这个设置。
shell 具有在一个命令的持续时间内设置变量的特定语法;使用它。
all: unittest integration
unittest:
echo 'Running unittest'
TYPE= nosetests
integration:
echo 'Running integration test'
TYPE=integration nosetests
顺便说一句,你不应该为你自己的变量使用大写;这些名称保留供系统使用。