我有一个在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
但是认为这是一个相当薄弱的检查。我可以做一个更复杂的测试吗?
答案 0 :(得分:0)
只需检查变量的实际值。如果是/bin/bash
,则说明您正在使用bash,否则使用PowerShell:
ifeq ($(SHELL),/bin/bash)
HOME := '/c/Users/myusername'
else
HOME := 'C:/Users/myusername'
endif