【问题标题】:How to access the ProgramFiles environment variable from nmake on x64 machines?如何在 x64 机器上从 nmake 访问 ProgramFiles 环境变量?
【发布时间】:2010-07-25 12:14:00
【问题描述】:

我尝试获取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 机器上都可以工作

【问题讨论】:

    标签: environment-variables nmake


    【解决方案1】:

    这个表达式似乎可以在 64 位 Windows 7 上运行,nmake 可以在 32 位和 64 位中运行:

    %%PROGRAMFILES(x86)%%
    

    例如

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我更新了问题以更好地解释推理(主要是我需要这个值才能正确定位包含目录)。另外,如果您知道一种从注册表读取值的方法,但我很确定 nmake 不支持此功能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      相关资源
      最近更新 更多