代码之家  ›  专栏  ›  技术社区  ›  Menny

在Windows计算机上构建Bazel

  •  2
  • Menny  · 技术社区  · 7 年前

    我试图在Windows机器上构建bazel,但是 bazel build //src:bazel 未找到任何要生成的目标:

    $ bazel build //src:bazel
    Loading:
    Loading: 0 packages loaded
    INFO: Analysed 0 targets (0 packages loaded).
    INFO: Found 0 targets...
    [0 / 1] [-----] BazelWorkspaceStatusAction stable-status.txt
    INFO: Elapsed time: 0.389s, Critical Path: 0.01s
    INFO: Build completed successfully, 1 total action
    

    需要明确的是:这种情况只发生在 主人 ,我能够在Windows计算机上构建Bazel的0.10.1 dist版本(来自github)。

    为了确保我的0.10.1二进制文件正常,我构建了cpp示例(//示例/cpp:hello world)。它按预期工作-没有故障。

    我能够构建一个稳定的dist版本(即0.10.1)bazel 主人 在Linux和macOS机器上。

    我们将非常感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  6
  •   László    7 年前

    看起来您正在运行MSYS Bash中的Bazel。这不再是必需的,因为Bazel是自0.5.0版以来的本机Windows二进制文件。

    MSYS认为 //src:bazel 是Unix样式的路径(因为它以 / )因此,它将Bazel的“路径”转换为Windows路径。IIRC转换逻辑只删除一个 / 目标模式最终是 /src:bazel .

    作为一种解决方案,我建议采用以下方法之一:

    • 从运行Bazel cmd.exe 或来自Powershell。这就是我使用Bazel的方式,它按预期工作。

    • 禁用MSYS中的路径转换启发式:

      export MSYS_NO_PATHCONV=1 export MSYS2_ARG_CONV_EXCL="*"

    • 使用 /// 而不是 // 在目标路径中。这只适用于MSYS,我认为它不可靠,因为我不了解MSYS的路径转换逻辑,所以我不推荐此解决方案,但无论如何,它是这样的:

      bazel build ///src:bazel