使用 Bazel,如何从二进制文件中检索标记信息?

gra*_*rj7 6 stamp bazel

该手册详细介绍了如何使用构建信息标记二进制文件(https://docs.bazel.build/versions/master/user-manual.html)。

我的问题是“如何从二进制文件中读取该信息?”

Bri*_*man 2

这取决于您所讨论的二进制文件类型。其中大多数的记录都非常少。我已经弄清楚了如何针对某些语言执行此操作,主要是通过阅读 Bazel 源代码。

对于 C++,您将linkstampa 的(未记录的)属性设置cc_library为一个.cc文件,该文件将在编译时将 、 和其余部分定义为适当的值BUILD_SCM_REVISIONbazelbuild/bazel#2893是一个开放的错误,可以更好地记录这一点。BUILD_TIMESTAMP

对于 a genrule,您将stamp属性设置为1,然后它就可以访问bazel-out/volatile-status.txt/bazel-out/stable-status.txt的信息。bazelbuild/bazel#944对此进行了一些讨论。

我见过 Bazel 代码用于对.propertiesJava 文件执行某些操作,但我从未真正弄清楚如何使用它。