Как я могу удалить первый каталог из пути включения в 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__",
    ],
)
Другие вопросы по тегам