[英]How to make bazel label absolute?
Bazel genquery文檔說:
與 BUILD 文件中的命令行和其他地方相比,這里的標簽是相對於工作區的根目錄進行解析的。 例如,文件 a/BUILD 中此屬性中的 label:b 將引用目標 //:b。
這意味着,在pkg
package 中,我必須寫//pkg:b
而不是b
或:b
。 但是,如果將 genquery 包裝在宏中,這會導致用戶混淆:用戶必須了解實現才能了解附加要求,例如:
my_cc_binary(
name = "app",
deps = ["foo", ":bar", "//baz:qux"],
)
如果my_cc_binary
包裝了對deps
操作的 genquery(除了cc_binary
),則標簽的語義會發生變化。 如何在宏中使指定的相對標簽成為絕對標簽?
使用package_name和repository_name :
def absolute_label(label):
if label.startswith('@') or label.startswith('/'):
return label
if label.startswith(':'):
return '@' + native.repository_name() + '//' + native.package_name() + label
return '@' + native.repository_name() + '//' + native.package_name() + ':' + label
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.