2010-07-25 114 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