Как вывести список выходных групп правила Bazel? - PullRequest
2 голосов
/ 16 апреля 2020

С { ссылка }:

cc_library производит несколько выходов, которые разделены группами выходов. Если вы хотите получить только .so выходы, вы можете использовать filegroup с dynamic_library группой выходов.

Где я могу найти список всех групп выходов, созданных cc_library? И вообще, как я могу перечислить все выходные группы правила базеля?

1 Ответ

1 голос
/ 18 апреля 2020

Это не замена документации, но можно получить выходные группы целей, используя аспект :

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>])
...