bazel fetch //... 对 BUILD 和 WORKSPACE 文件不执行任何操作
bazel fetch //... does nothing for BUILD and WORKSPACE files
我无法让 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 关于 external dependencies、
的文档
而且我无法弄清楚我遗漏了什么。有什么想法吗?
我看了里面$(bazel info output_base)/external
,
但我在那里没有看到任何内置的依赖项。
您当前的工作区 //...
中可能没有任何内容依赖于 @gtest//...
中的任何目标,因此 运行ning 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 下载和构建外部依赖项。
也许我在这里遗漏了一些明显的东西,
但让我们以 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 关于 external dependencies、
的文档
而且我无法弄清楚我遗漏了什么。有什么想法吗?
我看了里面$(bazel info output_base)/external
,
但我在那里没有看到任何内置的依赖项。
您当前的工作区 //...
中可能没有任何内容依赖于 @gtest//...
中的任何目标,因此 运行ning 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