Как добавить проект, отличный от Bazel, в качестве цели сборки для текущего проекта Bazel?
Фон: у меня есть библиотека только для заголовков C++, например: mpack mpack использует систему сборки cmake. Однако я хочу использовать некоторые из его функций в своем проекте (my_project), который использует систему сборки bazel.
Я выполнял шаги из https://docs.bazel.build/versions/1.2.0/external.html#non-bazel-projects .
Цель: Попытка включить mpack.hpp в sni_filter.cc
Мои изменения:
а) Добавлен следующий фрагмент в файл WORKSPACE
new_local_repository(
name = "mpack-c",
path = "mpack-c",
build_file = "BUILD.mpack-c",
)
б) Добавлен BUILD.mpack-c
cc_library(
name = "mpack-lib",
srcs = glob(["**"]),
visibility = ["//visibility:public"],
)
c) Добавлена цель mpack-lib в BUILD-файл sni_filter.
envoy_cc_library(
name = "sni_filter_lib",
srcs = ["sni_filter.cc"],
hdrs = ["sni_filter.h"],
deps = [
"@mpack-c//:mpack-lib",
],
)
Когда я пытаюсь запустить сборку bazel, она выдает ошибку:
ERROR: Error fetching repository: /xoxo/xyz/abc/repo/src/engine/WORKSPACE:28:21: In new_local_repository rule //external:mpack-c the 'build_file' attribute does not specify an existing file (/xoxo/xyz/abc/repo/src/engine/BUILD.mpack-c does not exist)
ERROR: /xoxo/xyz/abc/repo/src/engine/my_proj/sni_filter/BUILD:11:17: //my_proj/sni_filter:sni_filter_lib depends on @mpack-c//:mpack-lib in repository @mpack-c which failed to fetch. no such package '@mpack-c//': In new_local_repository rule //external:mpack-c the 'build_file' attribute does not specify an existing file (/xoxo/xyz/abc/repo/src/engine/BUILD.mpack-c does not exist)
1 ответ
Путь в
new_local_repository
должен быть либо абсолютным, либо относительным для каталога, в котором находится файл. Кроме того, метка в
build_file
Атрибут должен быть указан относительно корня рабочей области.
Итак, в вашем
WORKSPACE
заменить файл:
new_local_repository(
name = "mpack-c",
path = "mpack-c",
build_file = "BUILD.mpack-c",
)
с:
new_local_repository(
name = "mpack-c",
path = "mpack",
build_file = "mpack/BUILD.mpack-c",
)
Для справки см . документацию .