包括Protobufs和Bazel

时间:2017-09-04 02:22:16

标签: c++ protocol-buffers bazel

我有以下BUILD文件:

load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library")

### Protos ###

cc_proto_library(
    name = "homework_cc_proto",
    protoc = "@com_google_protobuf//:protoc",
    default_runtime = "@com_google_protobuf//:protobuf",
)

proto_library(
    name = "homework_proto",
    srcs = [
        "protos/complexity.proto",
        "protos/example.proto",
        "protos/problem.proto",
        "protos/solution.proto",
    ],
)

### End Protos ###

### Binaries ###

cc_binary(
    name = "main",
    srcs = ["main.cc"],
    deps = [":homework_cc_proto"],
)

main.cc

#include <iostream>
#include "example.pb.h"

int main() {
  std::cout << "Hello!" << std::endl;
}

如果我调用bazel build :homework_cc_proto,则构建成功。但是,当我运行bazel build :main时,我收到错误消息,指出无法找到example.pb.h。如何导入我构建的protobufs?

1 个答案:

答案 0 :(得分:1)

您的cc_proto_library需要依赖homework_proto

cc_proto_library(
    name = "homework_cc_proto",
    protoc = "@com_google_protobuf//:protoc",
    default_runtime = "@com_google_protobuf//:protobuf",
    deps = [ ":homework_proto" ],
)