如何在x64机器上通过nmake访问ProgramFiles环境变量?

3
我会尝试获取环境变量 ProgramFiles 的路径,这个变量在 x64 机器上是扩展为 C:\Program Files (x86),而在 x86 机器上则是 C:\Program Files
问题在于,在 nmake 文件中,如果我执行以下操作:
 all:
      echo $(PROGRAMFILES)

每次都会扩展为C:\Program Files,这是错误的。

x64机器的环境细节:

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

现在更新的问题是如何在nmake中获取x86程序文件的位置,以一种方式,这将适用于x86和x64机器

2个回答

2

这个表达式在64位的Windows 7上似乎可以工作,在32位和64位的情况下都可以运行nmake

%%PROGRAMFILES(x86)%%

e.g.

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

1

如果您使用的是x64机器,那么在64位程序环境中,%ProgramFiles%指向C:\Program Files是完全合法的。

要获取x86对应项的变量是%ProgramFiles(x86)%

可以通过评估设置在PROCESSOR_ARCHITECTURE环境变量中的当前操作系统架构(例如设置为AMD64)来确定使用哪个。或者尝试获取%ProgramFiles(x86)%,如果为空,则获取%ProgramFiles%的内容。

另一种方法是启动32位cmd.exe并在其中运行make。它位于C:\Windows\SysWOW64


我更新了问题以更好地解释推理(主要是我需要此值以便正确定位包含目录)。另外,如果您知道一种从注册表中读取值的方法,但我非常确定nmake不支持这个。 - sorin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接