簡體   English   中英

如何使巴澤爾 label 絕對?

[英]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_namerepository_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM