在Windows上,
make
使用
cmd.exe
作为其默认外壳
,而不是PowerShell。
你可以
指导
make
使用PowerShell
将以下内容放在
Makefile
s改编自
this answer
:
仅限Windows,使用
Windows PowerShell
:
SHELL := powershell.exe
.SHELLFLAGS := -NoProfile -Command
# Sample target that echoes information about the PowerShell edition and version.
# Note:
# * '@' preceding a command prevents the command itself from getting echoed.
# * '$' has special meaning to `make` itself, so to pass a verbatim '$'
# through to PowerShell, it must be escaped as '$$'
.PHONY: demo
demo:
@$$PSVersionTable
仅限Windows,使用
PowerShell(核心)7+
:
SHELL := pwsh.exe
.SHELLFLAGS := -NoProfile -Command
.PHONY: demo
demo:
@$$PSVersionTable
跨平台,在上使用Windows PowerShell
窗户
(并且必要的是,
PowerShell(核心)7+
在…上
Unix
-类似平台):
ifeq ($(OS),Windows_NT)
SHELL := powershell.exe
else
SHELL := pwsh
endif
.SHELLFLAGS := -NoProfile -Command
.PHONY: demo
demo:
@$$PSVersionTable
跨平台,在所有平台上使用PowerShell(Core)7+:
ifeq ($(OS),Windows_NT)
# Note: .exe is *required* on Windows; otherwise,
# make.exe quietly falls back to cmd.exe
SHELL := pwsh.exe
else
SHELL := pwsh
endif
.SHELLFLAGS := -NoProfile -Command
.PHONY: demo
demo:
@$$PSVersionTable
笔记
-
假设是
pwsh
/
pwsh.exe
,
PowerShell(核心)
s
CLI
,可以通过定位
$env:PATH
,官方安装程序会确保这一点,但如果需要,您可以使用完整的路径。
-
注意:如前所述,在Windows上
必须
包括
.exe
在文件名/路径中。如果
制作
找不到可执行文件,它悄悄地返回到默认的shell(
命令提示符
在Windows上,
/bin/sh
在类Unix平台上)。
-
内置的
Windows PowerShell
CLI,
powershell.exe
,在
$env:PATH
默认情况下。