来自https://stackoverflow.com/a/59455700/6162120:
cc_library
产生多个输出,这些输出由输出组分隔。如果只想获取.so输出,则可以将filegroup
与dynamic_library
输出组一起使用。
在哪里可以找到cc_library
产生的所有输出组的列表?更一般而言,如何列出bazel规则的所有输出组?
答案 0 :(得分:2)
这不能代替文档,但是可以使用aspect获取目标的输出组:
defs.bzl
:
def _output_group_query_aspect_impl(target, ctx):
for og in target.output_groups:
print("output group " + str(og) + ": " + str(getattr(target.output_groups, og)))
return []
output_group_query_aspect = aspect(
implementation = _output_group_query_aspect_impl,
)
然后在命令行上:
bazel build --nobuild Foo --aspects=//:defs.bzl%output_group_query_aspect
({--nobuild
仅运行分析阶段,并在不需要时避免运行执行阶段)
对于java_binary
,它返回例如:
DEBUG: defs.bzl:3:5: output group _hidden_top_level_INTERNAL_: depset([<generated file _middlemen/Foo-runfiles>])
DEBUG: defs.bzl:3:5: output group _source_jars: depset([<generated file Foo-src.jar>])
DEBUG: defs.bzl:3:5: output group compilation_outputs: depset([<generated file Foo.jar>])
答案 1 :(得分:1)
在下一个Bazel版本(3.7之后)中,或者从今天开始使用Bazel @ HEAD,您可以使用 "scripts": {
"start": "react-scripts start",
"build": "react-scripts build && npm run copy",
"test": "react-scripts test",
"eject": "react-scripts eject",
"copy": "cp public/.htaccess dist"
},
和cquery --output=starlark
函数来做到这一点:
providers()