vcpkg 中常见的环境变量及其作用

胜天半子 发布于 19 天前


概括

  • VCPKG_ROOT:指定 vcpkg 根目录,CMake 调用脚本时会读取它。
  • PATH:将 vcpkg 可执行文件目录加入 PATH,以便任意位置可调用 vcpkg
  • VCPKG_DEFAULT_TRIPLET:设定默认构建三元组(如 x64-windows、x64-linux)。
  • VCPKG_FEATURE_FLAGS:开启 vcpkg 的“off-by-default”功能集合。
  • VCPKG_KEEP_ENV_VARS / VCPKG_ENV_PASSTHROUGH:控制哪些环境变量传递给包构建,以及哪些变化会触发重建。
  • VCPKG_VISUAL_STUDIO_PATH:手动指定 VS 安装路径,覆盖自动检测。

常用环境变量详解

VCPKG_ROOT

  • 功能:告诉 vcpkg 在哪个目录下查找自身脚本和工具链文件,等同于命令行参数 --vcpkg-root 的效果。仅当执行文件不在此目录或未用开关指定时生效。
  • CMake 中用法:
    if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
      set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "")
    endif()
    

VCPKG_DEFAULT_TRIPLET

  • 功能:指定默认架构和运行时组合,如 x64-windowsx86-linux
  • 作用:执行 vcpkg install xxx 时,无需每次添加 :x64-windows 后缀即可安装对应架构包。

VCPKG_FEATURE_FLAGS

  • 功能:开启 vcpkg 中尚未默认启用的实验性或预览功能,逗号分隔。
  • 注意:这些功能可能随时变更,不保证稳定。

VCPKG_KEEP_ENV_VARS 与 VCPKG_ENV_PASSTHROUGH

  • VCPKG_KEEP_ENV_VARS:列出不会被记录到 ABI、也不会因变化触发重建的环境变量(; 分隔)。
  • VCPKG_ENV_PASSTHROUGH:列出会被跟踪并在变化时触发重建的环境变量(, 分隔)。
  • 场景:当依赖外部 SDK 路径或自定义编译选项时,用此变量传递给构建系统。

VCPKG_VISUAL_STUDIO_PATH

  • 功能:显式指定 Visual Studio 安装路径,避免 vcpkg 自动扫描到不想用的版本。
  • 示例:
    set VCPKG_VISUAL_STUDIO_PATH=D:\Program Files\Microsoft Visual Studio22\Community
    

不同平台的配置方法

Windows

  1. 临时设置(仅当前终端有效)
    set VCPKG_ROOT=C:\path\to\vcpkg  
    set PATH=%VCPKG_ROOT%;%PATH%  
    set VCPKG_DEFAULT_TRIPLET=x64-windows  
    
  2. 永久设置(所有终端有效)
    • 右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。
    • 在“系统变量”下:
      • 新建 VCPKG_ROOT,值填 vcpkg 根目录(如 C:\vcpkg)。
      • 选中 Path→编辑→新增 %VCPKG_ROOT%
      • 如需默认三元组,则新建 VCPKG_DEFAULT_TRIPLET,值 x64-windows
    • 重启终端或 IDE 生效。

Linux / macOS

  1. 临时设置(当前 shell 会话)
    export VCPKG_ROOT=/home/user/vcpkg  
    export PATH=$VCPKG_ROOT:$PATH  
    export VCPKG_DEFAULT_TRIPLET=x64-linux  
    
  2. 永久设置(所有会话)
    • ~/.bashrc~/.zshrc 或对应 shell 配置文件中添加上述 export 行。
    • 保存并执行 source ~/.bashrc(或重启终端)以应用。

验证环境变量是否生效

  1. 打开新终端(或 PowerShell/CMD)。
  2. 执行
    vcpkg version  
    echo $VCPKG_ROOT  # Linux/macOS  
    echo %VCPKG_ROOT% # Windows  
    
  3. 若能正确显示版本号及根目录,即配置成功。

通过上述配置,你即可在任意路径下调用 vcpkg,并在 CMake 或 IDE 中无缝集成 vcpkg 管理的库。

遇挚友,如逢春,自此长明,天光大亮
最后更新于 2025-05-17