- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在生成许多 Go 源文件作为我们构建的一部分。以前我们使用了 genrule
( example here ) 导致生成的文件存储在 bazel-genfiles/
.
我们最近切换到使用自定义规则,如 rules_go
中所示。 ( https://github.com/bazelbuild/rules_go/tree/master/examples/bindata )。此更改意味着输出源文件存储在 bazel-bin/
而不是 bazel-genfiles/
.
输出位置的这种更改破坏了我们开发人员使用的一些 IDE 中的 Go 集成。值得注意的是, gocode
,vim-go
使用的自动完成引擎和 VSCode,在 bzl
中运行时(Bazel) 查找模式似乎希望在 bazel-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": attr.label_list(allow_files = True, cfg = "data"),
"package": attr.string(mandatory=True),
"_bindata": attr.label(allow_files=True, single_file=True, default=Label("@com_github_jteeuwen_go_bindata//go-bindata:go-bindata")),
},
)
ctx.new_file
有一个争论。或
ctx.action
但在 Skylark 引用或教程中找不到任何相关内容。
最佳答案
尝试设置 output_to_genfiles=True
在 rule()
定义。在rule docs中提到了.
所以:
bindata = rule(
_bindata_impl,
attrs = {
"srcs": attr.label_list(allow_files = True, cfg = "data"),
"package": attr.string(mandatory=True),
"_bindata": attr.label(allow_files=True, single_file=True, default=Label("@com_github_jteeuwen_go_bindata//go-bindata:go-bindata")),
},
output_to_genfiles = True,
)
关于bazel - 如何将自定义规则的输出放在 `bazel-genfiles/` 而不是 `bazel-out/` 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586200/
我们正在生成许多 Go 源文件作为我们构建的一部分。以前我们使用了 genrule ( example here ) 导致生成的文件存储在 bazel-genfiles/ . 我们最近切换到使用自定义
我是一名优秀的程序员,十分优秀!