3

我尝试获取ProgramFiles环境变量的路径,该变量应该扩展到机器上和C:\Program Files (x86)机器上。x64C:\Program Filesx86

问题是,如果我这样做,在 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 机器上都可以工作

4

2 回答 2

2

此表达式似乎适用于 64 位 Windows 7,可nmake在 32 位和 64 位中运行:

%%PROGRAMFILES(x86)%%

例如

LC = %%PROGRAMFILES(x86)%%\Microsoft SDKs\Windows\v7.0A\bin\lc.exe
于 2012-11-29T04:25:36.237 回答
1

如果您在 x64 机器上,那么从 64 位程序的环境中%ProgramFiles%指向是完全合法的。C:\Program Files您必须用来获取 x86 对应的变量是%ProgramFiles(x86)%.

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

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

于 2010-07-25T12:20:46.707 回答