gpt4 book ai didi

gcc - 如何在makefile中设置环境变量?

转载 作者:行者123 更新时间:2023-12-03 23:23:15 58 4
gpt4 key购买 nike

如何在 Windows 上的 makefile 中正确设置环境变量?
我收到关于 CreateProcess 的错误消息.

C:\>make.exe -f build.makefile start
export MALLOC_PERTURB_=110
process_begin: CreateProcess(NULL, export MALLOC_PERTURB_=110, ...) failed.
make (e=2): The system cannot find the file specified.
c:\testmake.makefile:4: recipe for target 'start' failed
make: *** [start] Error 2

START:
export NODE_ENV=110
echo $(NODE_ENV)

最佳答案

您的问题并不完全清楚,但那里有许多明显的错误。

首先你正在运行 make在 Windows 下编写食谱,就像它们是 shell 脚本一样。在 Windows 上情况并非如此(至少默认情况下)。

所以export正试图作为失败的外部命令运行(因此有关 CreateProcess 的错误消息失败)。

您也没有向我们展示实际抛出该错误的目标。

此外,您正在期待 export并在配方的第一行分配对配方正文中的第二行有效(对于 start 目标)。

但事实并非如此。 makefile 目标配方中的每一行都在独立的环境中运行。所以export并在 START 的第一行赋值目标的配方不会影响第二行。

为此,您需要使用一条长线或使用 .ONESHELL make 最新版本的功能.

此外,您正在使用 $(NODE_ENV)在您的配方中期望它是您之前设置的 shell 变量。甚至忽略前面提到的不正确的问题。

make要扩容$(NODE_ENV)作为 make 变量 之前 它甚至完全运行配方。你的意思是 ${NODE_ENV}$NODE_ENV对于 shell 变量。 那个据说对于制作食谱,您实际上需要逃避 $因为 ${NODE_ENV}也是一个有效的 make 变量扩展。所以你需要$${NODE_ENV}$$NODE_ENV那里。

放在一起,你最终会得到这个(假设你在某处有一个 shell 可以使用)。

SHELL := /path/to/your/shell

START:
export NODE_ENV=110; \
echo "$${NODE_ENV}"

(尽管那时您实际上并不需要 export,但这完全是一个不同的问题)。

但是如果你 不要有一个 shell 可以使用,然后你就可以使用 cmd.exe我不确定 export 的等价物是什么有(尽管正如我刚刚说的,您不需要它)并且您最终会得到这样的东西(完全未经测试):
START:
NODE_ENV=110; \
echo %NODE_ENV%

关于gcc - 如何在makefile中设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948154/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com