我正在尝试在 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。
这里的任何帮助将不胜感激。
看起来您正在从 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
归档时间: |
|
查看次数: |
3651 次 |
最近记录: |