То, что вы ищете, может быть уже реализовано в правиле репозитория new_git_repository
или в правиле git_repository
, если в проекте GitHub уже есть файлы Bazel BUILD
, подключенныеin.
Если у проекта GitHub нет файлов BUILD, файл BUILD требуется при использовании new_git_repository
.Например, если вы хотите зависеть от целевого файла (например, /foo/bar.txt
) или целевого правила (например, cc_library
) в https://github.com/example/repository
и в хранилище нет файлов BUILD, запишите эти строки в файл WORKSPACE
вашего проекта:
new_git_repository(
name = "example_repository",
remote = "https://github.com/example/repository.git",
build_file_content = """
exports_files(["foo/bar.txt"])
# you can also create targets
cc_library(
name = "remote_cc_library",
srcs = ["..."],
hdrs = ["..."],
""",
)
В своем файле BUILD
укажите ссылки на цели внешнего хранилища, используя@
префикс:
cc_library(
name = "testrun",
srcs = ["main.c"],
data = ["@example_repository//:foo/bar.txt"],
deps = ["@example_repository//:remote_cc_library"],
)
При запуске bazel build //:testrun
Bazel будет ..
- Анализировать зависимости
//:testrun
, в том числе файл main.c
ицели из внешнего репозитория @example_repository
. - Найдите файл WORKSPACE для внешнего репозитория с именем
example_repository
и найдет объявление new_git_repository
. - Выполните
git clone
дляremote
атрибут, указанный в объявлении example_repository
. - Запись файла BUILD, содержащего строку
build_file_content
в корне проекта клонированного репозитория. - Анализ целей
@example_repository//:foo/bar.txt
и @example_repository//:remote_cc_library
- Построение зависимостейи передает их в
//:testrun
cc_library
. - Build
//:testrun
.
Если проект GitHub имеет BUILD файлы, вы делаетене нужно предоставлять файл BUILD.Вы можете обратиться к целям непосредственно после указания зависимости WORKSPACE с помощью git_repository
:
git_repository(
name = "example_repository",
remote = "https://github.com/example/repository.git",
)
Для получения дополнительной информации ознакомьтесь с документацией Bazel по Внешние репозитории .