makefile:根据布尔环境变量切换变量值
makefile: toggle value of variable based on boolean env var
我有一个设置为 true 或 false 的环境变量 INTEGRATION。
我想根据 INTEGRATION 设置为 true 还是 false 来设置变量的值。
我试过:
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
还有
if [ ${SNOOTY_INTEGRATION} == false ]; then \
echo "HIT THE TRUTH"; \
PRODUCTION_URL="https://docs.mongodb.com"; \
fi
在运行宁
之后
export INTEGRATION=true
make help
在终端中,我运行make help
:
help:
echo "prod url ${PRODUCTION_URL}";
在第一种情况下,它打印 prod url integration
,在第二种情况下,它打印 prod url
——当需要的行为是打印时,prod url production
运行 env INTEGRATION=true
错误。
在当前 shell 中没有设置环境变量:它只在 env
命令中设置环境变量。
您可以使用:
$ export INTEGRATION=true
$ make help
(在 shell 中设置变量,这样所有后续命令都可以看到它,直到您再次取消导出它),或者您可以使用:
$ env INTEGRATION=true make help
这与(更常见和更短)本质上是一样的:
$ INTEGRATION=true make help
(仅为本次 make
的调用设置变量)。
但是你不能使用:
$ env INTEGRATION=true
$ make help
预计到达时间
如果这不起作用,那么您的环境中一定有其他您没有解释的地方。请提供一个完整的独立示例来说明问题。例如,我不知道您在问题中显示的 shell if 语句的用途是什么,也不知道它与您问题的其余部分有何关系。这对我有用:
$ cat Makefile
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
help:
echo "prod url ${PRODUCTION_URL}";
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=true
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=false
$ make help
echo "prod url "production"";
prod url production
我有一个设置为 true 或 false 的环境变量 INTEGRATION。
我想根据 INTEGRATION 设置为 true 还是 false 来设置变量的值。
我试过:
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
还有
if [ ${SNOOTY_INTEGRATION} == false ]; then \
echo "HIT THE TRUTH"; \
PRODUCTION_URL="https://docs.mongodb.com"; \
fi
在运行宁
之后export INTEGRATION=true
make help
在终端中,我运行make help
:
help:
echo "prod url ${PRODUCTION_URL}";
在第一种情况下,它打印 prod url integration
,在第二种情况下,它打印 prod url
——当需要的行为是打印时,prod url production
运行 env INTEGRATION=true
错误。
在当前 shell 中没有设置环境变量:它只在 env
命令中设置环境变量。
您可以使用:
$ export INTEGRATION=true
$ make help
(在 shell 中设置变量,这样所有后续命令都可以看到它,直到您再次取消导出它),或者您可以使用:
$ env INTEGRATION=true make help
这与(更常见和更短)本质上是一样的:
$ INTEGRATION=true make help
(仅为本次 make
的调用设置变量)。
但是你不能使用:
$ env INTEGRATION=true
$ make help
预计到达时间
如果这不起作用,那么您的环境中一定有其他您没有解释的地方。请提供一个完整的独立示例来说明问题。例如,我不知道您在问题中显示的 shell if 语句的用途是什么,也不知道它与您问题的其余部分有何关系。这对我有用:
$ cat Makefile
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
help:
echo "prod url ${PRODUCTION_URL}";
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=true
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=false
$ make help
echo "prod url "production"";
prod url production