首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Makefile for Windows中设置环境变量?

如何在Makefile for Windows中设置环境变量?
EN

Stack Overflow用户
提问于 2021-04-14 15:41:09
回答 1查看 880关注 0票数 0

我有以下Makefile:

代码语言:javascript
复制
PYTHON = python
.DEFAULT_GOAL = help
help:
    @echo ------------------------------Makefile for Flask app------------------------------
    @echo USAGE:
    @echo   make dependencies           Install all project dependencies
    @echo       make docker             Run Docker
    @echo       make env                Set environment variables
    @echo       make run                Run Flask app
    @echo       make test               Run tests for app
    @echo ----------------------------------------------------------------------------------
dependencies:
    @pip install -r requirements.txt
    @pip install -r dev-requirements.txt
docker:
    docker compose up

env:
    @set CS_HOST_PORT=5000
    @set CS_HOST_IP=127.0.0.1
    @set DATABASE_URL=postgresql://lv-python-mc:575@127.0.0.1:5482/Realty_DB
    @set REDIS_IP=127.0.0.1
    @set REDIS_PORT=6379
run:
    ${PYTHON} app.py    test:
    @${PYTHON} -m pytest

set命令不能工作,环境变量也没有设置,可能有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 20:43:54

当然,您可以设置环境变量,这些变量将对程序生成将调用的程序生效。但是make不能为调用make的shell设置环境变量。因此,如果makefile运行一个程序,那么您可以在makefile中设置一个环境变量,该环境变量在该程序中是可见的。

顺便说一句,这和make无关。这是操作系统的一个限制(或特性,取决于您的视角)。试试这个实验:

set FOO=bar

  • Run

  • 打开终端,

  • 运行

  • echo %FOO%。看到它打印bar.

  • From,同一个终端通过在这里运行cmd.exe

  • Now启动一个新的shell,运行set FOO=nobar

  • Run echo %FOO%。确保它通过运行nobar.

  • Now运行echo %FOO%

输出exit

  • Now退出新的shell

您将看到,与nobar不同,它仍然打印bar。这是因为操作系统不允许子程序修改父程序的环境。

所以,这件事无济于事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67094865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档