bazel:你如何"request" cc_binary构建二进制文件的剥离版本?



Bazel cc_binary规则的文档说:

隐式输出目标

<name>.stripped(仅在明确请求时才生成(:二进制文件的剥离版本。 strip -g在二进制上运行以删除调试符号。可以使用 --stripopt=-foo 在命令行上提供其他条带选项。仅当显式请求时,才会生成此输出。

我如何"明确请求"构建这个剥离的二进制文件?我需要在BUILD文件的cc_binary声明中放入什么内容吗?我无法从文档(或 Bazel 源代码(中弄清楚。

好吧,

我想我想出了办法。

如果我的BUILD文件有以下内容:

cc_binary(
  name = "mytool",
  srcs = ["mytool.c"]
)

。然后从命令行中,我可以使用以下内容构建剥离的二进制文件:

bazel build //:mytool.stripped

或者,更常见的情况是,如果我有另一个需要剥离二进制文件作为其输入之一的 BUILD 规则,我可以通过相同的标签 :mytool.stripped 引用它。这是一个奇怪的人为例子:

genrule(
  name = "mygenrule",
  outs = ["genrule.out"],
  srcs = [":tool1.stripped"],
  # run tool1.stripped, sends its output to genrule.out:
  cmd = "$(SRCS) > $@"
)

相关内容