0

我在 BUILD 文件中定义了以下别名:

alias(
    name = "platform",
    actual = select({
        ":macos_x86_64": "macos_x86_64",
        ":linux_x86_64": "linux_x86_64",
        ":linux_aarch64": "linux_aarch64",
    }),
    visibility = ["//visibility:public"],
)

如何将“实际”字符串传递给这样的函数?

def myFunction(platform): ...

我正在尝试最天真的事情,它不明白它是别名,而不是字符串:

myFunction("//bazel/config:platform")
4

1 回答 1

2

def myFunction创建,而不是规则。宏无法访问 a 的值select,只能向其中添加其他选择并将其传递给规则。考虑差异的另一种方式:宏可以做的事情很少不能直接在 BUILD 文件中完成。

此外,alias.actual是一个Label. 即使您将其传递给规则,这些值也必须是有效的标签,并且会被这样处理。您可以使用Label.name来取回名称。

于 2022-02-08T19:39:04.963 回答