You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

vcpkg如何查找Visual Studio Build Tools?本地安装未被识别怎么办?

问题描述

我按照无管理员权限的步骤,通过以下脚本本地安装了Visual Studio Build Tools:

# Visual Studio build tools
Write-Host "Installing visual studio build tools..." -ForegroundColor Cyan

cd $env:USERPROFILE

$exePath = "$env:TEMP\vs.exe"

Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vs_BuildTools.exe -UseBasicParsing -OutFile $exePath

Write-Host "layout..." -ForegroundColor Cyan

Start-Process $exePath -ArgumentList "--layout .\vs_BuildTools --quiet" -Wait
cd vs_BuildTools

Write-Host "actual installation..." -ForegroundColor Cyan

Start-Process vs_setup.exe -ArgumentList "--installPath $env:USERPROFILE\vs_BuildTools2022 --nocache --wait --noUpdateInstaller --noWeb --allWorkloads --includeRecommended --includeOptional --quiet --norestart" -Wait

但使用以下脚本通过vcpkg安装gtest时:

Write-Host "Installing vcpkg..." -ForegroundColor Cyan

git clone https://github.com/Microsoft/vcpkg.git C:\src\vcpkg

C:\src\vcpkg\bootstrap-vcpkg.bat

C:\src\vcpkg\vcpkg.exe --version
C:\src\vcpkg\vcpkg.exe install gtest

出现报错:

error: in triplet x64-windows: Unable to find a valid Visual Studio instance

我想了解:

  1. vcpkg是在哪里查找Visual Studio Build Tools安装目录的?
  2. 是否可以通过设置环境变量让vcpkg识别到我的本地安装?

解答

一、vcpkg查找Visual Studio实例的逻辑

vcpkg通过以下三种方式定位VS/VS Build Tools:

  • 注册表项:优先读取系统或用户注册表中的VS安装信息,比如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7(系统级)或HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SxS\VS7(用户级)。但非管理员安装的VS Build Tools可能不会写入系统注册表,或仅写入用户注册表但未被vcpkg正确读取。
  • VSWhere工具:vcpkg内置vswhere.exe,通过它扫描已注册的VS实例。默认情况下,vswhere会识别系统级安装和符合官方规范的用户级安装,但未正确注册的非管理员安装可能被遗漏。
  • 环境变量:如果存在指定VS安装路径的环境变量,vcpkg会优先使用该路径。

二、让vcpkg识别非管理员安装的VS Build Tools的方法

1. 设置环境变量指定安装路径

直接设置VCPKG_VISUAL_STUDIO_PATH环境变量,指向你的VS Build Tools安装目录:

# 运行vcpkg前执行该命令
$env:VCPKG_VISUAL_STUDIO_PATH = "$env:USERPROFILE\vs_BuildTools2022"

也可以在系统/用户环境变量中添加该变量,值为你的实际安装路径(比如C:\Users\<你的用户名>\vs_BuildTools2022)。

2. 手动注册到用户注册表

非管理员安装的VS Build Tools可能未写入注册表,可手动添加用户注册表项:

  1. 打开注册表编辑器(regedit.exe),定位到HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SxS\VS7
  2. 新建字符串值,名称为VS版本号(比如VS2022对应17.0),值为你的安装路径(需以反斜杠结尾,如C:\Users\<你的用户名>\vs_BuildTools2022\)
  3. 重启终端后再运行vcpkg命令

3. 执行VS环境初始化脚本

在运行vcpkg前,先执行VS Build Tools自带的环境脚本,让系统识别编译环境:

& "$env:USERPROFILE\vs_BuildTools2022\Common7\Tools\VsDevCmd.bat" -arch=x64

执行完成后再运行vcpkg安装命令,vcpkg就能通过环境变量识别到VS实例。


内容的提问来源于stack exchange,提问作者Poperton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:33:43