在 Windows 上的 makefile 中捕获 powershell 命令的输出

在 Windows 上的 makefile 中捕获 powershell 命令的输出

我正在尝试创建一个可以在 Windows 和 Unix 操作系统上运行的 Makefile。(作为参考,可以找到适用于 Windows 版本的 Make这里)。作为 Makefile 的一部分,我需要能够拆分路径(包含在环境变量中)以仅获取文件名(带扩展名)。我对非 Windows 操作系统使用命令“basename”,目前正在尝试使用 Powershell 命令“Split-Path”从 Windows 上的路径中获取文件名。在命令行或 make 配方中运行此命令会得到所需的输出。但是,我无法让它工作,以便我可以将 Makefile 中的 Powershell 命令的结果捕获到变量中。我在 Makefile 中当前用于检测操作系统并从路径中获取文件的设置如下所示:

ifeq ($(OS),Windows_NT)
    # Windows
    # The following line doesn't capture the output as expected
    FILENAME_I_WANT:=$(powershell -noprofile Split-Path $(PATH_ENVIRONMENT_VARIABLE) -leaf)
else
    # Unix based OS
    FILENAME_I_WANT:=$(shell basename $(PATH_ENVIRONMENT_VARIABLE))
endif

有人看到我做错的事吗,或者对如何解决这个问题有什么建议吗?

谢谢!

答案1

为什么不使用操作系统的环境变量,而只是引用文件名的基本名称?

# Get the host OS
$env:OS
# Results
<#
Windows_NT
#>

# Get the target 5th in the folder and only show the basename
((Get-ChildItem -Path 'D:\Temp')[5]).BaseName
# Results
<#
IEDriverServer_Win32_3.150.1
#>

相关内容