У меня есть среда на основе GNU Make, которую я использую как в Windows, так и в Linux. В Windows я бы использовал SHELL:=C:/windows/System32/WindowsPowerShell/v1.0/powershell.exe
, в то время как в Linux я бы использовал SHELL:=/bin/bash
.
Это работало замечательно, пока мы не начали часто использовать git-bash в Windows. При вызове make
из git-bash дословный оператор if на основе $(OS)
будет включать в себя специфичный для Powershell Makefile, и в результате будут вызываться Powershell с путями из git-bash, например, HOME=/c/Users/myusername
, который не понимает Powershell.
Следовательно, мне нужно определить, был ли вызван make
из git-bash или Powershell, и правильно сделать (TM), исходя из того, какая оболочка использовалась для вызова make
. Отсюда вопрос: как мне достоверно определить, был ли make
вызван из bash или Powershell?
В настоящее время я делаю
ifeq($(filter %.exe,$(SHELL)),)
но думаю, что это довольно слабая проверка. Могу ли я сделать более сложный тест?