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

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