我们正在生成许多Go源文件作为构建的一部分.以前我们使用了genrule(这里的例子)导致生成的文件存储在其中bazel-genfiles/.
我们最近切换到使用自定义规则,如rules_go(https://github.com/bazelbuild/rules_go/tree/master/examples/bindata)所示.此更改意味着输出源文件存储bazel-bin/而不是bazel-genfiles/.
输出位置的这种变化破坏了我们开发人员使用的一些IDE中的Go集成.值得注意的是,在(Bazel)查找模式下运行时,VSCode gocode使用的自动完成引擎似乎期望找到生成的源,而不是,因此失败.vim-gobzlbazel-genfiles/bazel-bin/
如何修改我的规则以保存输出bazel-genfiles/而不是bazel-bin/?我的规则等同于以下示例rules_go:
def _bindata_impl(ctx):
out = ctx.new_file(ctx.label.name + ".go")
ctx.action(
inputs = ctx.files.srcs,
outputs = [out],
executable = ctx.file._bindata,
arguments = [
"-o", out.path,
"-pkg", ctx.attr.package,
"-prefix", ctx.label.package,
] + [src.path for src in ctx.files.srcs],
)
return [
DefaultInfo(
files = depset([out])
)
]
bindata = rule(
_bindata_impl,
attrs = {
"srcs": …Run Code Online (Sandbox Code Playgroud) bazel ×1