为Bazel指定MSVC版本

Specify MSVC version for bazel

本文关键字:版本 MSVC 指定 Bazel      更新时间:2023-10-16

我正在寻找一种告诉Bazel应该使用哪种版本的VC 版本的方法。我已经设置了BAZEL_VC=VS2017CommunityVC但是问题是我的目录VS2017CommunityVCToolsMSVC有许多不同的VC 编译器。特别是有以下版本

14.11.25503
14.13.26020
14.15.26726
14.16.27023

有可能强迫巴泽尔使用特定版本吗?默认情况下,它使用第一个(按字母顺序),这对我来说是不正确的。

bazel现在读取BAZEL_VC_FULL_VERSION,除了BAZEL_VC之外设置。

set BAZEL_VC=C:Program Files (x86)Microsoft Visual Studio2017BuildToolsVC
set BAZEL_VC_FULL_VERSION=14.16.27023

这是为Visual Studio 2017和2019添加的。旧VS版本不支持它。

来源:Bazel Windows Documentation

当前没有官方方法可以做到。这就是Bazel搜索MSVC编译器的方式(来自Visual Studio 2017)

# Normally there should be only one child directory under %VC_PATH%TOOLSMSVC,
# but iterate every directory to be more robust.
for path in dirs:
    tool_path = str(path) + "\bin\HostX64\x64\" + tool
    if repository_ctx.path(tool_path).exists:
        break

基本上,它将使用cl.exe

首先找到目录

一个解决方法可能只是为了重命名/移动您不需要的所有子dir,而必要的一个不受欢迎的副本。真正的方法是更改源代码并重新编译Bazel:)