如何从Bazel中提取编译器与链接器标志?
提取Bazel构建应用的编译器/链接器标志的方法
有几个直接的Bazel命令可以帮你提取目标应用的编译器和链接器标志:
- 用
bazel build --subcommands //path/to:your_target:执行这个命令后,Bazel会打印构建过程中所有执行的子命令,其中就包含编译器(如gcc、clang)和链接器的完整命令行,所有的编译、链接标志都会清晰显示出来。 - 用
bazel build --verbose_failures //path/to:your_target:如果构建失败,这个参数会输出完整的错误命令,里面包含编译/链接阶段的全部标志。要是构建能成功,你可以故意修改目标代码制造一个小错误(比如语法错误),触发失败来获取这些信息。 - 用
bazel build --show_actions //path/to:your_target:这个命令会列出构建目标所需的所有动作细节,每个编译、链接动作的参数都会被展示出来。
另外,如果你需要结构化的输出,还可以用bazel cquery //path/to:your_target --output=starlark --starlark:expr="target.compilation_context().compiler_flags()"直接提取编译器标志,对应的链接器标志可以用target.link_context().linker_flags(),不过这个需要对Bazel的Starlark API有一点基础了解。
内容的提问来源于stack exchange,提问作者Ma.Ha
相关产品推荐
相关产品推荐

