我怎样才能让这个 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 命令一样?