2016-01-22 104 views
0

我想触发单元测试和集成测试在Makefile中没有设置,我目前的实现是这样的:环境变量在生成文件

all: unittest integration 
unittest: 
    $(ECHO) @echo 'Running unittest' 
    @unset TYPE 
    @nosetests 
integration: 
    $(ECHO) @echo 'Running integration test' 
    @export TYPE=integration 
    @nosetests 

,但我有与设置环境变量,当我运行的问题make integrationTYPE环境变量将不会被设置,如果我export TYPE=integration手动设置环境变量,然后我跑make unittest,环境变量将无法取消设置。如何解决这个问题?

+0

在每个命令之前放置@是防止所有调试的反模式。删除它们并在执行工作时使用'make -s'运行。 – tripleee

+0

为什么这个标签为“python”?有什么特定的Python或者它是相当通用的吗?然后我会建议删除标签。 – dd23

回答

2

配方中的每个命令都在单独的shell中运行。它运行export TYPE立即离开所述外壳;那么下一个命令将运行在一个新的实例中,当然这个实例没有这个设置。

外壳具有用于设定一个命令的持续时间的可变特定语法;使用它。

all: unittest integration 
unittest: 
    echo 'Running unittest' 
    TYPE= nosetests 
integration: 
    echo 'Running integration test' 
    TYPE=integration nosetests 

顺便说一句,你不应该使用大写为自己的变量;这些名称保留供系统使用。