【问题标题】:How to retrieve the path to cl.exe?如何检索 cl.exe 的路径?
【发布时间】:2018-06-22 17:56:10
【问题描述】:

我想在 Visual Studio 中检索编译器 cl.exe 的完整路径,以便从程序中调用它。我们在注册表中有密钥吗?怎么做?

【问题讨论】:

  • 您可以在计算机上安装多个版本的 Visual Studio。此外,可以多次安装 Visual Studio 2017(使用不同类型的许可证)。此外,您可以为一个 Visual Studio 2017 设置提供多个版本的 VC 工具(cl.exe 是“VC 工具”的一部分)。你能细化你的要求吗?
  • 我想列出所有 cl.exe 的路径,或者从 CPU 中找到它的特定版本、版本……我有一个生成 C++ 语言的程序,我想使用此 C++ 源代码自动调用编译器。
  • “我想列出所有 cl.exe 的路径,或者从 CPU 中找到它的特定版本、版本……”那么使用我的回答?

标签: visual-studio


【解决方案1】:

cl.exe 通常位于%VCINSTALLDIR%\bin\VCINSTALLDIR 环境变量默认是没有设置的,但是当你打开 Visual Studio 的 Native Tools 命令提示符时会设置。

这是在该批处理脚本中的完成方式:

:GetVCInstallDir
@set VCINSTALLDIR=
@call :GetVCInstallDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper64  HKLM > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper64  HKCU > nul 2>&1
@exit /B 0

:GetVCInstallDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "14.0"') DO (
    @if "%%i"=="14.0" (
        @SET VCINSTALLDIR=%%k
    )
)
@if "%VCINSTALLDIR%"=="" exit /B 1
@exit /B 0

:GetVCInstallDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "14.0"') DO (
    @if "%%i"=="14.0" (
        @SET VCINSTALLDIR=%%k
    )
)
@if "%VCINSTALLDIR%"=="" exit /B 1
@exit /B 0

因此,根据系统的位数,它会查看这些注册表项之一

32 位

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VC7 如果 VS 安装在系统范围内
  2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SxS\VC7 如果为当前用户安装了 VS

64 位

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7 如果 VS 安装在系统范围内
  2. HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7 如果为当前用户安装了 VS

然后你有每个已安装版本的字符串。这是它在我的机器上的样子:

如果您不知道自己想要什么版本,则需要额外的工作以编程方式检索正确的值,但这超出了本问题的范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多