我想寫一些Makefile
用GNU make
在Cygwin
下編譯的項目。 某些環境變量是在Windows中定義的,例如某些SDK的路徑。比如說SDKPATH C:\MySDKPath
。Cygwin下的Makefile和環境變量
在Makefile中,我用這個路徑訪問SDK的include目錄,其中包括:
CFLAGS := -I$(SDKPATH)/include
在目標規則: $(CC) $(CFLAGS) $< -o [email protected]
我的問題是,經過make
將其展開爲C:\MySDKPath/include
並將其作爲參數傳遞給編譯器,參數將擴展爲C:MySDKPath/include
,這顯然不是意圖。
我不能真正改變環境變量,因爲它是由SDK設置的,並且要求每個人調整它會導致各種新問題。我可以做一些快速和骯髒的搜索和替換(如MYSDKPATH := $(patsubst C:%,/cygdrive/c%,$(subst \,/,$(SDKPATH)))
),但我想知道是否沒有一個乾淨的,既定的方式來處理這種可能的常見情況。
只是一個正在丟失的反斜槓,或者路徑中有幾個? – Beta
@Beta:在我的機器上有一些它們,但由於它是一個環境變量,因此依賴於機器,你可以考慮我不知道它有多少。 –