Может ли Bazel напечатать иерархию правил сборки?

Правила Bazel могут составлять другие правила Bazel. Например:

def cpp_library(name,deps=[]):

    explicit_cpp_file = name + ".cpp"
    explicit_hpp_file = name + ".hpp"

    native.cc_library(
        name = name,
        srcs = [explicit_cpp_file],
        hdrs = [explicit_hpp_file],
        deps = deps,
    )

Здесь мы видим, что cpp_library использования native.cc_library,
Есть ли способ использовать базовый запрос для печати этой информации об отношениях?

Вы можете себе представить, насколько сложно узнать, какие правила используются, какие другие правила в проекте увеличиваются в размерах, и доступно много правил.

1 ответ

Вы можете получить эту информацию через bazel query с --output, --output build покажет правила после запуска макросов. --output graph покажет отношения между правилами, например

bazel query //some/package --output graph | xdot

(или, например, | dot -Tpng > /tmp/dep.png)

См. https://docs.bazel.build/versions/master/query.html.

Другие вопросы по тегам