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

使用vcpkg构建v141工具集grpc C++静态库时re2构建失败

问题:使用vcpkg基于v141工具集构建gRPC静态库时re2编译失败

错误日志

Installing 8/11 re2:x64-windows@2023-07-01...
Building re2:x64-windows@2023-07-01...
-- Downloading https://github.com/google/re2/archive/2023-07-01.tar.gz -> google-re2-2023-07-01.tar.gz...
-- Extracting source C:/Source/Repos/vcpkg/downloads/google-re2-2023-07-01.tar.gz
-- Using source at C:/Source/Repos/vcpkg/buildtrees/re2/src/2023-07-01-5f6ab6c906.clean
-- Configuring x64-windows
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
    Command failed: C:/Source/Repos/vcpkg/downloads/tools/ninja/1.10.2-windows/ninja.exe -v
    Working Directory: C:/Source/Repos/vcpkg/buildtrees/re2/x64-windows-rel/vcpkg-parallel-configure
    Error code: 1
    See logs for more information:
      C:\Source\Repos\vcpkg\buildtrees\re2\config-x64-windows-dbg-CMakeCache.txt.log
      C:\Source\Repos\vcpkg\buildtrees\re2\config-x64-windows-rel-CMakeCache.txt.log
      C:\Source\Repos\vcpkg\buildtrees\re2\config-x64-windows-out.log
Call Stack (most recent call first):
  installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_configure.cmake:252 (vcpkg_execute_required_process)
  ports/re2/portfile.cmake:9 (vcpkg_cmake_configure)
  scripts/ports.cmake:192 (include)
error: building re2:x64-windows failed with: BUILD_FAILED
See https://learn.microsoft.com/vcpkg/troubleshoot/build-failures?WT.mc_id=vcpkg_inproduct_cli for more information.
Elapsed time to handle re2:x64-windows: 2.8 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
  https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+re2
You can submit a new issue at:
  https://github.com/microsoft/vcpkg/issues/new?title=[re2]+Build+error+on+x64-windows&body=Copy+issue+body+from+C%3A%2FSource%2FRepos%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md

已尝试的操作

  • 针对abseil、grpc、openssl、protobuf、re2、upb、zlib、vcpkg-cmake、vcpkg-cmake-get-vars及vcpkg-cmake-config端口执行git checkout 8184c5e -- ports/<port>,该提交为适配v141工具集的最新版本;
  • 修改triplet配置(本机同时安装VS2017和VS2022):
set(VCPKG_PLATFORM_TOOLSET v141)
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
  • 删除vcpkg的installed、packages、downloads文件夹后执行.\vcpkg install grpc:x64-windows。

疑问及解决方案

一、MAKECOMMAND引用v143 cmake的排查点

  1. 检查环境变量:确认系统PATH中是否优先包含VS2022的CMake路径,导致vcpkg调用了高版本CMake。临时调整PATH,将VS2017对应的CMake路径(通常在C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin)移到VS2022路径之前。
  2. 指定vcpkg使用的CMake版本:在vcpkg的triplet文件中添加set(VCPKG_CMAKE_EXECUTABLE "C:/path/to/vs2017/cmake.exe"),强制指定VS2017配套的CMake版本。
  3. 检查VS环境变量加载:执行vcpkg前,运行C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\Common7\Tools\VsDevCmd.bat加载VS2017开发环境,避免误加载VS2022的环境。

二、Ninja版本选择

当前vcpkg自带的1.10.2版本完全兼容v141工具集,无需刻意更换。若怀疑Ninja问题,可尝试更新到v1.11及以上版本,但核心问题还是CMake与工具集的匹配。

三、修改re2的CMakeLists.txt适配VS2017(v141)

找到re2源码目录下的CMakeLists.txt(路径为C:/Source/Repos/vcpkg/buildtrees/re2/src/2023-07-01-5f6ab6c906.clean/CMakeLists.txt),做以下修改:

  1. 调整最低VS版本要求:
    • 把cmake_minimum_required(VERSION 3.16)改为cmake_minimum_required(VERSION 3.14)(VS2017配套CMake最低版本为3.14);
    • 找到检查MSVC版本的代码,比如:
      if(MSVC)
        if(MSVC_VERSION LESS 1920) # VS2019对应MSVC_VERSION=1920
          message(FATAL_ERROR "RE2 requires Visual Studio 2019 or later.")
        endif()
      endif()
      
      将1920改为1910(VS2017对应MSVC_VERSION=1910),或直接注释这段版本检查代码。
  2. 修复C++标准兼容:若后续编译出现C标准相关错误,在CMakeLists.txt中添加set(CMAKE_CXX_STANDARD 14)(VS2017对C17支持不完善,re2 2023-07-01版本可降级到C++14编译)。

修改后重新执行vcpkg install命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:00:57