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) > $@"
)