无法通过cc_library规则为bazel成功包含外部头文件

时间:2017-07-06 20:54:21

标签: c++ bazel

我无法通过bazel中的build命令包含一些头文件。我按照它们包含在bazel文档中的example进行了操作。

这是我的构建文件

cc_library(
    name = "hello-greet",
    srcs = ["hello-greet.cc"],
    hdrs = ["hello-greet.h"],
    copts = ["-Imain/include"]
)

cc_binary(
    name = "hello-world",
    srcs = ["hello-world.cc"],
    deps = [
        ":hello-greet",
    ],
)

以下是我的目录的结构。

  • WORKSPACE
    • 包括
      • 你好-greet.h
    • hello-greet.cc
    • hello-world.cc
    • BUILD

我不知道这是否会有所帮助,但这里有一些源代码和头文件的代码。

hello-greet.cc

#include "hello-greet.h"
#include <string>

std::string get_greet(const std::string& who) {
  return "Hello " + who;
}

hello-world.cc

#include "hello-greet.h"
#include <ctime>
#include <iostream>
#include <string>

void print_localtime() {
  std::time_t result = std::time(nullptr);
  std::cout << std::asctime(std::localtime(&result));
}

int main(int argc, char** argv) {
  std::string who = "world";
  if (argc > 1) {
    who = argv[1];
  }
  print_localtime();
  return 0;
}

当我运行bazel build命令时,它会抱怨此错误

INFO: Found 1 target...
ERROR: missing input file '//main:hello-greet.h'.

1 个答案:

答案 0 :(得分:0)

您应该可以将includes = "."添加到cc_library(无需copts

,从而实现您想要的效果