我目前正在研究Bazel构建系统。我总是在Bazel脚本中看到@符号,但是找不到有关它的任何文档。我在Bazel网站上进行了搜索,但结果似乎没有用。 @ in Bazel。 例如:
filegroup(
name = "toolchain_fg",
srcs = [
":cc-compiler-amd64",
"@x86_64_unknown_linux_gnu_gcc_730//:compiler_components",
],
)
有人可以在这里为我解释@符号吗?
答案 0 :(得分:5)
这是引用远程存储库。
在文档中,depending on other Bazel projects
local_repository( name = "coworkers_project", path = "/path/to/coworkers-project", )
如果您的同事有目标
//foo:bar
,则您的项目可以引用该目标 为@coworkers_project//foo:bar
。
另请参见工作区规则中的design doc of remote repository和bind example。
答案 1 :(得分:0)
在Bazel中,目标由标签引用。
挡板标签具有以下格式:
@repoName//packageName:target
例如,在myRepo
中找到的以下软件包中:
myRepo
├── WORKSPACE
├── package1
│ └── BUILD
│ └── src
└── package2
├── BUILD
└── src
在myTarget
中称为package1/BUILD
的目标可以全局标记为@myRepo//package1:myTarget
。
如果从同一个仓库中引用,例如从package2/BUILD
中引用,则可以省略@myRepo
前缀,并且可以使用//package1:myTarget
。
如果从同一包中引用,例如在package1/BUILD
中的另一个目标中引用,则可以省略包名称,并且可以使用:myTarget
。如果冒号不会引起名字混淆,也可以省略。此类简短形式的标签不应与名称混淆。标签以“ //”或“:”开头。但是名字永远不会。例如,第一个软件包的名称为package1
,但其标签为//package1
。