如何将别名值传递给 bazel 函数?

How can I pass an alias value to a bazel function?

我在 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")

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

另外,alias.actual is a Label. Even when you pass it to a rule, the values need to be valid labels, and will be handled as such. You can use Label.name 找回名字。