Makefile 和 windows `set /p`

问题描述 投票:0回答:1

我正在为 Windows 编写一个 makefile,并且正在尝试将他的 UNIX 代码片段转换为 Windows:

 @read -p "Version? (provide the next x.y.z semver) : " TAG
 @git commit -m "release: version $${TAG} 🚀"

我的 makefile 作为

ONESHELL
片段运行,unix 变体工作完美。但是,对于 Windows,我找不到一种方法来要求用户输入并随后使用此输入,例如与
set /p

 @set /p TAG="Version? (provide the next x.y.z semver) : "
 @git commit -m "release: version %TAG% 🚀"

我想使用本机 Windows powershell/cmd,而不是像 cygwin 这样的东西。

问题是,环境变量尚未设置,因为它在

ONESHELL
中运行(我认为)。此外,我也无法设置任何其他(临时)环境变量供以后在 Windows 中的代码片段使用。

我尝试启用延迟扩展(

setlocal delayedexpansion
),据我所知,这应该是这个问题的解决方案;但这在 makefile 中似乎不可能。

使用

-
运算符强制执行子 shell 也不起作用,以及使用 $(shell ...) 将代码片段放入单独的 shell 中

windows powershell makefile gnu-make
1个回答
0
投票

那又如何

set /p tag="which version?"
echo "will use %tag%"
© www.soinside.com 2019 - 2024. All rights reserved.