构建@com_google_protobuf //:protobuf_lite时缺少依赖项

时间:2017-10-06 21:37:49

标签: macos protocol-buffers bazel

尝试从https://github.com/google/protobuf/(3.4.1版本)在OS X上构建:protoc时,我得到以下内容:

$ bazel build @com_google_protobuf//:protobuf_lite

ERROR: <...>/external/com_google_protobuf/BUILD:93:1: undeclared inclusion(s) in rule '@com_google_protobuf//:protobuf_lite':
this rule is missing dependency declarations for the following files included by 'external/com_google_protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc':
  '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/stddef.h'
  '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/__stddef_max_align_t.h'
  '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/stdint.h'
  '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/stdarg.h'
  '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/limits.h'.
```

但是,当建立目标而不是外部回购时,它会成功。

$ cd <...>/external/com_google_protobuf/
$ bazel build :protobuf_lite

列出的标题是系统标题,因此我遗漏了一些非常明显的内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

来自https://github.com/bazelbuild/bazel/issues/2852#issuecomment-295747929

设置BAZEL_SH=/bin/bash可以解决问题。

答案 1 :(得分:0)

FWIW,我今天在升级MacOS命令行工具后也遇到了同样的错误。

对我有用的是bazel clean --expunge。如果没有--expunge,则无法解决问题。