この問題は、makefileを別のOSで実行する必要があり、OSに応じてさまざまな設定(エスケープ、パス区切り文字など)を適切に設定する必要がある場合に発生します。最初のアプローチは、WindowsCOMSPECを使用することでした。
ifneq ($(COMSPEC)$(ComSpec),)
## in windows
else
## in linux
endif
Cygwinは、Windowsの環境変数を認識し、CygwinをWindowsとして検出するため、これは誤検知です。次に、LinuxPWDを試しました。
ifeq ($(PWD),)
## in windows
else
## in linux, cygwin
endif
ただし、オフサイトツールの統合の結果として、Windows(perlのモジュールの1つ)にPWDが設定されました。そのため、検出は再び失敗します。
環境変数を使用してCygwin、Linux、Windowsを区別するための最良のアプローチは何でしょうか。