Protocol buffers 在Bazel构建中获取工作区根
我正在使用为我的Protocol buffers 在Bazel构建中获取工作区根,protocol-buffers,bazel,Protocol Buffers,Bazel,我正在使用为我的helloworld.proto文件构建Python语言绑定。我的helloworld.proto导入 我的构建文件 load("@org_pubref_rules_protobuf//python:rules.bzl", "py_proto_compile") # Wrapper around proto_compile. # https://github.com/pubref/rules_protobuf/blob/master/protobuf/internal/prot
helloworld.proto
文件构建Python语言绑定。我的helloworld.proto
导入
我的构建文件
load("@org_pubref_rules_protobuf//python:rules.bzl", "py_proto_compile")
# Wrapper around proto_compile.
# https://github.com/pubref/rules_protobuf/blob/master/protobuf/internal/proto_compile.bzl
py_proto_compile(
name = "py",
with_grpc = True,
protos = ["helloworld.proto"],
imports = ["/usr/local/home/username/myproject/include"]
)
wrappers.proto
文件位于目录中
/usr/local/home/username/myproject/include
Bazel规则py_proto_compile
由和定义<代码>导入定义为:
- 名称:
导入
- 类型:字符串列表`
- 说明:作为-I参数传递给protoc工具的可选路径
- 默认值:
[]
wrappers.proto
的位置:
imports=[“/usr/local/home/username/myproject/include”]
Bazel似乎没有任何引用我的工作区根的文件。理想情况下,我想做这样的事情:
imports=[“$WORKSPACE\u ROOT”/include“]
新更新:
还有一种更为精细的方法。请查看。看看上面的文字:
#获取对用户项目根目录的引用
project\u dir=ctx.path(项目中的ctx.attr.file)。dirname
旧答案:
您可以使用\uuuu workspace\u dir\uuuu
获取当前工作目录的路径(即包含workspace
文件的目录)
来源:我发现旧答案更好,因为它不需要自定义规则至少包含一个指向调用工作区中文件的属性。
/usr/local/home/username/myproject/include