Makefile:确定是否使用bash或powershell

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

我有一个基于GNU Make的框架,我一直在Windows和Linux上使用它。在Windows上我会使用SHELL:=C:/windows/System32/WindowsPowerShell/v1.0/powershell.exe而在Linux上我会使用SHELL:=/bin/bash

这一直很有效,直到我们/我开始在Windows上使用git-bash很多。当从git-bash调用make时,迄今为止基于$(OS)的if语句将包含Powershell特定的Makefile,因此将调用Powershell,其中包含来自git-bash的路径,例如: HOME=/c/Users/myusername,Powershell不明白。

因此,我需要确定是否从git-bash或Powershell调用make并根据用于调用make的shell做正确的事(TM)。因此问题是:我如何可靠地确定是否从bash或Powershell调用make

目前我这样做

ifeq($(filter %.exe,$(SHELL)),)

但认为这是一个相当弱的检查。我可以做更复杂的测试吗?

bash powershell gnu-make
1个回答
0
投票

只需检查变量的实际值。如果它是/bin/bash你正在使用bash,否则PowerShell:

ifeq ($(SHELL),/bin/bash)
    HOME := '/c/Users/myusername'
else
    HOME := 'C:/Users/myusername'
endif
© www.soinside.com 2019 - 2024. All rights reserved.