bazel fetch //... ничего не делает для файлов BUILD и WORKSPACE
Я не могу заставить Базель скачивать и создавать внешние зависимости.
Может быть, я упускаю что-то очевидное здесь,
но давайте возьмем gtest
В качестве примера.
В корне моего рабочего пространства у меня есть gtest.BUILD
а также WORKSPACE
,
Они определены как:
gtest.BUILD:
cc_library(
name = "main",
srcs = glob(
["src/*.cc"],
exclude = ["src/gtest-all.cc"]
),
hdrs = glob([
"include/**/*.h",
"src/*.h"
]),
copts = ["-Iexternal/gtest/include"],
linkopts = ["-pthread"],
visibility = ["//visibility:public"],
)
РАБОЧАЯ СРЕДА:
new_http_archive(
name = "gtest",
url = "https://github.com/google/googletest/archive/release-1.7.0.zip",
build_file = "gtest.BUILD",
strip_prefix = "googletest-release-1.7.0",
)
Я пытаюсь использовать gtest
в моем другом коде, но внешней зависимости не существует.
Когда я бегу bazel fetch //...
это ничего не делает.
Я пытаюсь следовать документации Bazel о внешних зависимостях,
и я не могу понять, что я оставляю Какие-нибудь мысли?
Я заглянул внутрь $(bazel info output_base)/external
,
но я не вижу там никаких построенных зависимостей.
1 ответ
Вполне возможно, что ничего в вашем текущем рабочем пространстве //...
зависит от любой цели в @gtest//...
так работает bazel fetch //...
не говорит Bazel, что он должен скачать @gtest
,
$ bazel fetch //...
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
...........
$
Если вы попытаетесь запустить bazel fetch @gtest//...
непосредственно, он загрузит архив как ожидалось:
$ bazel fetch @gtest//...
INFO: SHA256 (https://github.com/google/googletest/archive/release-1.7.0.zip) = b58cb7547a28b2c718d1e38aee18a3659c9e3ff52440297e965f5edffe34b6d0
Building: no action
Теперь, если вы добавите цель, которая зависит от @gtest//:main
и беги bazel fetch //...
опять загрузится @gtest
:
$ bazel clean --expunge
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
$ cat BUILD
filegroup(
name = "gtest",
srcs = ["@gtest//:main"],
)
$ bazel fetch //...
Starting local Bazel server and connecting to it...
..........
INFO: SHA256 (https://github.com/google/googletest/archive/release-1.7.0.zip) = b58cb7547a28b2c718d1e38aee18a3659c9e3ff52440297e965f5edffe34b6d0
Building: no action
$ ls $(bazel info output_base)/external
bazel_tools @bazel_tools.marker gtest @gtest.marker local_config_cc @local_config_cc.marker