Как я могу удалить первый каталог из пути включения в bazel?
У меня есть следующая структура проекта, которую я пытаюсь перенести в Bazel из другой системы сборки:
MyProject/
├─ WORKSPACE.bazel
├─ app/
│ ├─ BUILD.bazel
│ ├─ main.cpp
├─ lib/
│ ├─ BUILD.bazel
│ ├─ lib1/
│ │ ├─ lib1.hpp
│ │ ├─ lib1.cpp
│ ├─ lib2/
│ │ ├─ lib2.hpp
│ │ ├─ lib2.cpp
├─ etc/
├─ test/
Мне удалось скомпилировать проект, но мне пришлось изменить пути включения, и остальная часть моей команды недовольна этим, хотя им нравится улучшенная производительность сборки. Я хочу вернуть пути включения к тому, что они были раньше, в настоящее время у меня компилируется проект:
#include "lib/lib1/lib1.hpp"
#include "lib/lib2/lib2.hpp"
вmain.cpp
но остальная часть команды действительно хочет вернуться к:
#include "lib1/lib1.hpp"
#include "lib2/lib2.hpp"
и мои файлы BUILD для переноса в Bazel тоже не требовали ничего сумасшедшего:
app/BUILD.bazel
load("@rules_cc//cc:defs.bzl", "cc_binary")
cc_binary(
name = "MyApp",
srcs = ["main.cpp"],
copts = [
...,
],
linkopts = [
...,
],
deps = [
"//lib:lib1",
"//lib:lib2",
],
)
lib/BUILD.bazel
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "lib1",
hdrs = glob(["lib1/**/*.hpp"]),
srcs = glob(["lib1/**/*.cpp"]),
copts = [
...,
],
linkopts = [
...,
],
visibility = [
"//app:__pkg__",
"//test:__pkg__",
],
)
cc_library(
name = "lib2",
hdrs = glob(["lib2/**/*.hpp"]),
srcs = glob(["lib2/**/*.cpp"]),
copts = [
...,
],
linkopts = [
...,
],
visibility = [
"//app:__pkg__",
"//test:__pkg__",
],
)
Разве это невозможно с помощью Bazel или я что-то пропустил?
1 ответ
Установка включений в библиотеке на "." работал:
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "lib1",
hdrs = glob(["lib1/**/*.hpp"]),
srcs = glob(["lib1/**/*.cpp"]),
includes = ["."],
copts = [
...,
],
linkopts = [
...,
],
visibility = [
"//app:__pkg__",
"//test:__pkg__",
],
)
cc_library(
name = "lib2",
hdrs = glob(["lib2/**/*.hpp"]),
srcs = glob(["lib2/**/*.cpp"]),
includes = ["."],
copts = [
...,
],
linkopts = [
...,
],
visibility = [
"//app:__pkg__",
"//test:__pkg__",
],
)