makefile 在 window 中设置环境变量

makefile set environment variables in window

我在 windows 中写了一个 makefile 来设置环境变量,但是它不起作用。 像这样

local:
    set CONFIGOR_ENV=local
    echo %CONFIGOR_ENV%

然后我执行它,它打印

set CONFIGOR_ENV=local
echo %CONFIGOR_ENV%
ECHO 处于关闭状态。

然后我明白了 **生成文件不可能设置您的环境。 makefile 在 shell 的单独实例中运行命令。就像如果你打开了两个 cmd.exe windows 并且你在其中一个中设置了一个变量,它不会在另一个中设置。这与 make 的工作方式相同。 **

所以我更新了,

local:
    set CONFIGOR_ENV=local ^
    echo %CONFIGOR_ENV%

但它打印相同的信息

set CONFIGOR_ENV=local ^
echo %CONFIGOR_ENV%
ECHO 处于关闭状态。

我也试试那个shell

.ONESHELL:
local:
    set CONFIGOR_ENV=local ^
    echo %CONFIGOR_ENV%

打印:

set CONFIGOR_ENV=local ^
echo %CONFIGOR_ENV%
ECHO 处于关闭状态。

制作版本:

GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

我想知道makefile可以在windows中设置环境变量吗?

我不确定你为什么在这里使用 ^。转义字符:在这种情况下似乎没有用。

您可以写:

local:
        set CONFIGOR_ENV=local & echo %CONFIGOR_ENV%

(在 Windows 批处理文件中,& 是命令分隔符,类似于 POSIX shell 中的 ;)或者您可以使用 .ONESHELL,如果你的 make 版本支持它,但你应该删除 ^;通过添加 ^ ,您只需转义换行符,这样整个事情就会分配给变量;也就是说,你是 运行:

set CONFIGOR_ENV=local  echo %CONFIGOR_ENV%

所以在此之后 CONFIGOR_ENV 变量的值将是 local echo.