mingw32-make.exe:如何在目标中执行 powershell 命令而不是仅将其输出为字符串?

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

我怎样才能让这个 makefile 在 linux 和 windows 上一样工作?

在 Linux/Bash 中我运行这个命令:

echo "the date and time is: $(date '+%Y-%m-%d %H:%M:%S')"

它输出:

the date and time is: 2023-03-18 15:38:10

在 Windows/PowerShell 中,我正在运行这个命令:

echo "the date and time is: $(Get-Date -format 'yyyy-MM-dd HH:mm:ss')"

它输出:

the date and time is: 2023-03-18 15:39:47

这些命令在功能上是等价的。 现在我想创建一个 makefile,使 make 为 Linux/Windows 运行相应的命令,并在每个命令上获得类似的输出。

我创建了这个 makefile:

ifeq ($(OS), Windows_NT)
print-datetime:
    @echo "the date and time is: $$(Get-Date -format 'yyyy-MM-dd HH:mm:ss')"
else
print-datetime:
    @echo "the date and time is: $$(date "+%Y-%m-%d %H:%M:%S")"
endif

现在,当我在 linux 上运行

make
时,我得到以下输出:

the date and time is: 2023-03-18 15:41:55

哪个好,这就是我想要的

但是,当我在 Windows 上运行

make
(来自 mingw 的 mingw32-make.exe)时,我得到这个输出:

"the date and time is: $(Get-Date -format 'yyyy-MM-dd HH:mm:ss')"

不好,这不是我想要的。 它不是运行命令,而是打印命令字符串

如何让 mingw32-make.exe 在 powershell 上执行命令,就像 linux 上的 gnu make 在 linux 上执行相应的 linux 命令一样?

windows powershell makefile
© www.soinside.com 2019 - 2024. All rights reserved.