2010-07-25 80 views
3

我嘗試獲取ProgramFiles環境變量的路徑,該路徑應該在x64機器上擴展爲C:\Program Files (x86),並在x86機器上擴展爲C:\Program Files如何從x64機器上的nmake訪問ProgramFiles環境變量?

的問題是,在NMAKE文件,如果我做的:

all: 
     echo $(PROGRAMFILES) 

這將擴大到C:\Program Files每次,這是錯誤的。從64位機

環境的詳細信息:

ProgramFiles(x86)=C:\Program Files (x86) 
ProgramW6432=C:\Program Files 

:: this one is special, if will return different results based on current process x86/x64 
ProgramFiles=C:\Program Files (x86) or C:\Program Files 
PROCESSOR_ARCHITECTURE=x86 or x64 

現在更新的問題是如何獲得的86程序文件的位置內NMAKE,在某種程度上,這將在x86和x64計算機工作?

回答

2

該表達似乎在64位的Windows 7工作,以在nmake 32位和64位運行:

%%PROGRAMFILES(x86)%% 

例如

LC = %%PROGRAMFILES(x86)%%\Microsoft SDKs\Windows\v7.0A\bin\lc.exe 
1

如果您使用的是x64機器,則%ProgramFiles%指向C:\Program Files是完全合法的,即在64位程序的環境中。 您必須使用的變量才能獲得x86對應的變量爲%ProgramFiles(x86)%

可以通過評估在PROCESSOR_ARCHITECTURE環境變量(例如設置爲AMD64)中設置的當前OS的體系結構來確定要使用哪一個。或者乾脆試試%ProgramFiles(x86)%,如果它是空的,請獲取%ProgramFiles%的內容。

另一種方法是啓動一個32位的cmd.exe並在那裏運行make。它位於C:\Windows\SysWOW64

+0

我更新了這個問題來解釋更好的推理(主要是我需要這個值,以便正確定位include目錄)。此外,如果你知道從註冊表中讀取值的方式,但我很確定nmake不支持這一點。 – sorin 2010-07-25 12:36:39

相關問題