Я не могу заставить bazel загружать и создавать внешние зависимости.
Может, здесь что-то очевидное упускает,
но возьмем для примера 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,
но я не вижу там никаких m встроенных зависимостей.





Возможно, что ничто в вашем текущем рабочем пространстве //... не зависит от какой-либо цели в @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
Для этого можно использовать "Базель синхронизацию".
ах спасибо. Я предположил, что
bazel fetch //...получил все зависимости независимо от того, использовались ли они.