Bazel 是否需要外部存储库 BUILD 文件位于 $WORKSPACE_ROOT/external 中?
Does Bazel need external-repo BUILD files to be in $WORKSPACE_ROOT/external?
我用这个为 glfw 创建了一个存储库:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
new_git_repository(
name = "glfw",
build_file = "BUILD.glfw",
remote = "https://github.com/glfw/glfw.git",
tag = "3.2.1",
)
我将 BUILD.glfw
放在 WORKSPACE 根目录中。当我建造时,我看到:
no such package '@glfw//': Not a regular file: [snipped/external/BUILD.glfw
我将 BUILD.glfw
移动到 external/BUILD.glfw
并且它似乎有效,但我找不到关于此的文档。关于 new_git_repository
的文档说 build_file
“...是相对于主工作区的标签。”;我在那里没有看到任何关于 'external' 的信息。
这是由于 new_git_repository
的原生版本和(较新的)Skylark 版本之间的语义差异不一致。要使用原生的new_git_repository
、comment/remove加载语句:
# load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
假设 new_git_repository 与 http_archive 存在相同的问题,根据 Bazel 问题 6225 您需要将 glfw 的 BUILD 文件引用为 @//:BUILD.glfw
我用这个为 glfw 创建了一个存储库:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
new_git_repository(
name = "glfw",
build_file = "BUILD.glfw",
remote = "https://github.com/glfw/glfw.git",
tag = "3.2.1",
)
我将 BUILD.glfw
放在 WORKSPACE 根目录中。当我建造时,我看到:
no such package '@glfw//': Not a regular file: [snipped/external/BUILD.glfw
我将 BUILD.glfw
移动到 external/BUILD.glfw
并且它似乎有效,但我找不到关于此的文档。关于 new_git_repository
的文档说 build_file
“...是相对于主工作区的标签。”;我在那里没有看到任何关于 'external' 的信息。
这是由于 new_git_repository
的原生版本和(较新的)Skylark 版本之间的语义差异不一致。要使用原生的new_git_repository
、comment/remove加载语句:
# load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
假设 new_git_repository 与 http_archive 存在相同的问题,根据 Bazel 问题 6225 您需要将 glfw 的 BUILD 文件引用为 @//:BUILD.glfw