Makefile:确定是bash还是powershell

时间:2019-04-03 07:50:59

标签: bash powershell gnu-make

我有一个在Windows和Linux上一直使用的基于GNU Make的框架。在Windows上,我将使用 Deluxe Single room with sea view ,而在Linux上,我将使用c_class = Deluxe c_occ = single c_view = sea

这一直很好,直到我们开始在Windows上大量使用git-bash为止。从git-bash调用SHELL:=C:/windows/System32/WindowsPowerShell/v1.0/powershell.exe时,迄今为止基于SHELL:=/bin/bash的if语句将包括Powershell特定的Makefile,结果将调用git-bash路径的Powershell,例如make,Powershell无法理解。

因此,我需要确定是否从git-bash或Powershell中调用了$(OS),并根据用于调用HOME=/c/Users/myusername的shell来做正确的事。因此出现了一个问题:如何可靠地确定是从bash还是从Powershell调用了make

目前我知道

make

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

1 个答案:

答案 0 :(得分:0)

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

ifeq ($(SHELL),/bin/bash)
    HOME := '/c/Users/myusername'
else
    HOME := 'C:/Users/myusername'
endif