use*_*608 4 gcc gnu makefile gnu-make
如何在 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)
Run Code Online (Sandbox Code Playgroud)
您的问题并不完全清楚,但那里有许多明显的错误。
首先你正在跑步 make在 Windows 下,但编写配方就好像它们是 shell 脚本一样。在 Windows 上情况并非如此(至少默认情况下)。
因此export,正在尝试作为失败的外部命令运行(因此出现有关CreateProcess失败的错误消息)。
您也没有向我们展示实际抛出该错误的目标。
此外,您希望export配方第一行上的and 分配对配方正文中的第二行(针对start目标)生效。
但事实并非如此。makefile 目标配方中的每一行都在独立的环境中运行。所以目标配方export第一行的and 赋值START不会影响第二行。
为此,您需要使用一条长线或使用.ONESHELL最新版本的功能make。
此外,您$(NODE_ENV)在配方中使用期望它是您之前设置的 shell 变量。甚至忽略前面提到的不正确的问题。
make甚至会在运行配方之前将其扩展$(NODE_ENV)为 make 变量。您的意思是或用于 shell 变量。这表示你确实需要逃离一个化妆配方,因为是也是一个有效的补充变量扩展。所以你需要或那里。${NODE_ENV}$NODE_ENV$${NODE_ENV}$${NODE_ENV}$$NODE_ENV
放在一起,你最终会得到这个(假设你在某处有一个 shell 可以使用)。
SHELL := /path/to/your/shell
START:
export NODE_ENV=110; \
echo "$${NODE_ENV}"
Run Code Online (Sandbox Code Playgroud)
(尽管export那时您实际上并不需要,但这完全是一个不同的问题)。
但是,如果您没有可使用的外壳,那么您就可以使用cmd.exe,我不确定那里的等价物export是什么(尽管正如我刚才所说,您不需要它)并且您最终会得到类似的东西这(完全未经测试):
START:
NODE_ENV=110; \
echo %NODE_ENV%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10379 次 |
| 最近记录: |