在 Windows 台机器上构建 Bazel

Building Bazel on a Windows machine

我正在尝试在 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

需要说明的是:这只发生在 master 上,我能够在我的 Windows机.

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

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

如有任何帮助,我们将不胜感激。

看来您是来自 MSYS Bash 的 运行 Bazel。这不再是必需的,因为 Bazel 自版本 0.5.0.

以来是本机 Windows 二进制文件

MSYS 认为参数 //src:bazel 是一个 Unix-style 路径(因为它以 / 开头)所以它将 Bazel 的 "path" 转换为 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