为什么 bazel 传递 $(version) 而不是 Version 的值?

问题描述 投票:0回答:1

我正在尝试将版本传递到我的 BUILD.bazel 文件,以便我可以覆盖主文件中的变量,以便我可以打印它,但它不起作用。

go_binary(
    name = "api",
    embed = [":api_lib"],
    visibility = ["//visibility:public"],
    x_defs = {"main.Version": "$(Version)"},

)

在我的make文件中我这样做

@bazelisk build  --define Version=1.9 //...

当我运行我的应用程序时,它会在版本中打印 $(Version) 而不是 1.9

go version bazel bazel-rules
1个回答
0
投票

看起来

x_defs
并没有进行变量替换,文档中没有提到: https://github.com/bazelbuild/rules_go/blob/master/docs/go/core/rules.md#go_binary-x_defs

这是 go 规则需要添加支持的事情。

按照这些文档,看起来

x_defs
将与构建冲压一起使用:

https://github.com/bazelbuild/rules_go/blob/master/docs/go/core/defines_and_stamping.md#defines-and-stamping

所以你可以尝试类似

x_defs = {"main.Version": "{STABLE_Version}"},
--workspace_status_command="echo STABLE_Version 0.9"

© www.soinside.com 2019 - 2024. All rights reserved.