Во-первых, мое окружение:
- Windows 10
- Базель 2.0.0
- VS2017
Я сделал очень простой C ++ проект с использованием Bazel. Он имеет два BUILD
s для проверки целевых ссылок. Макет:
- WORKSPACE
- libfoo
|- BUILD
|- foo.h
|- foo.cpp
- bar
|- BUILD
|- bar.cpp
В BUILD
файле libfoo определена очень простая библиотека:
cc_library(
name = "foo",
srcs = ["foo.cpp"],
hdrs = ["foo.h"],
visibility = ["//visibility:public"]
)
А в баре BUILD
объявлен исполняемый файл, который deps libfoo:
cc_binary(
name = "bar",
srcs = ["bar.cpp"],
deps = ["//libfoo:foo"],
)
, где bar.cpp
вызвал функцию, определенную в libfoo:
#include "foo.h"
#include <iostream>
int main()
{
std::clog << "bar main" << std::endl;
say_foo(); // a function defined in libfoo
}
Однако когда я компилирую bar, используя bazel build "//bar:bar"
, компилятор утверждает, что foo.h
не может быть открытым (код ошибки C1083 ).