我正在使用rules_protobuf为我的helloworld.proto
文件构建Python语言绑定。我的helloworld.proto
导入wrappers.proto。
syntax = "proto3";
package main;
import "google/protobuf/wrappers.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
由rules_protobuf和documented in the README.md定义。 imports
定义为:
imports
[]
我的构建规则有效,但我已将wrappers.proto
的位置硬编码为:
imports = ["/usr/local/home/username/myproject/include"]
Bazel似乎没有任何引用我的WORKSPACE根目录的predefined Make variables。理想情况下,我想做这样的事情:
imports = ["$WORKSPACE_ROOT"/include"]
答案 0 :(得分:1)
NEW UPDATE:
还有一种更精细的方法。检查this。看看它所说的行:
# Grab a reference to the root of the users project
project_dir = ctx.path(ctx.attr.file_in_project).dirname
OLD ANSWER:
您可以使用__workspace_dir__
获取当前工作目录的路径(即包含WORKSPACE
文件的目录)。