是的,Bazel可以打印构建规则的层级结构。你可以使用--output=xml
标志来生成一个XML格式的构建输出,并使用--show_result=xml
标志来显示规则层级结构。
以下是一个示例的解决方法:
BUILD
的文件,其中包含以下内容:cc_binary(
name = "hello_world",
srcs = ["hello_world.cc"],
visibility = ["//visibility:public"],
)
cc_library(
name = "greeting",
srcs = ["greeting.cc"],
visibility = ["//visibility:public"],
deps = [":util"],
)
cc_library(
name = "util",
srcs = ["util.cc"],
visibility = ["//visibility:public"],
)
hello_world.cc
的文件,其中包含以下内容:#include "greeting.h"
int main() {
Greeting greeting;
greeting.SayHello();
return 0;
}
greeting.h
的文件,其中包含以下内容:#ifndef GREETING_H
#define GREETING_H
class Greeting {
public:
void SayHello();
};
#endif
greeting.cc
的文件,其中包含以下内容:#include "greeting.h"
#include
void Greeting::SayHello() {
std::cout << "Hello, World!" << std::endl;
}
util.cc
的文件,其中包含以下内容:#include
void SomeUtilFunction() {
std::cout << "This is a utility function." << std::endl;
}
bazel build --output=xml --show_result=xml //:hello_world
这是一个示例输出的一部分:
在输出中,你可以看到//:hello_world
规则的层级结构,以及它所依赖的其他规则//:util
和//:greeting
。