在 Windows 机器上构建 Bazel

Men*_*nny 2 bazel

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

需要明确的是:这仅发生在master 上,我能够在我的 Windows 机器上构建 0.10.1 dist 版本的 Bazel(来自 github)。

为了确保我的 0.10.1 二进制文件没问题,我构建了 cpp 示例 (//examples/cpp:hello-world)。它按预期工作 - 没有失败。

我能够在 Linux 和 macOS 机器上构建稳定的 dist 版本(即 0.10.1)bazel master

这里的任何帮助将不胜感激。

Lás*_*zló 6

看起来您正在从 MSYS Bash 运行 Bazel。这不再是必要的,因为 Bazel 从 0.5.0 版开始就是一个原生的 Windows 二进制文件。

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

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

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

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

    export MSYS_NO_PATHCONV=1 export MSYS2_ARG_CONV_EXCL="*"

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

    bazel build ///src:bazel