小编Jan*_*Jan的帖子

Bazel构建详细的编译器命令记录

如何增加构建过程的详细程度?Bazel似乎只在构建期间出现问题时才打印编译器命令.

我想看看哪个编译器命令cc_library规则触发,即使一切似乎都很好,也可以调试链接问题.我已经尝试了各种bazel命令行参数,但没有给我编译器命令:(

c++ bazel

27
推荐指数
2
解决办法
2万
查看次数

Bazel头文件代码生成器

我试图通过编写规则来执行生成器来为我的bazel构建添加代码生成器,但我坚持将生成的头文件作为包含路径依赖添加到我正在尝试构建的库中.

该规则如下所示:

def _impl(ctx):
  output = ctx.outputs.out
  input = ctx.attr.defs
  md_dir = list(ctx.attr.md_dir.files)[0]
  print("generating", output.path)
  ctx.action(
      outputs=[output],
      progress_message="Generating %s" % md_dir,
      command="python codegen.py -md_dir %s %s -o %s" % (md_dir.path, input, output.path)
  )

code_generate = rule(
  implementation=_impl,
  attrs={
       "defs": attr.string(),
       "md_dir": attr.label(allow_files=True, single_file=True),
       "out": attr.output()
       },
)
Run Code Online (Sandbox Code Playgroud)

和BUILD文件是这样的:

load("/common/code_generate", "code_generate")

code_generate(
  name="generate_header_defs",
  defs="common/header_definition_file",
  md_dir="header_defs",
  out="gen_header.h",
)

cc_library(
  name="lnt",
  hdrs=glob(["*.h"]),
  srcs=["source.c":gen_header.h"],
  visibility=["//visibility:public"],
  deps=["@dep1//:x", "@dep2//:y", "@dep3//:z"],
)
Run Code Online (Sandbox Code Playgroud)

代码生成工作并将代码写入bazel-out/local-fastbuild/bin/common/gen_header.h但gcc命令行不会将生成的头文件的include路径添加到导致错误的内容:gen_header.h:否这样的文件或目录

c c++ code-generation bazel

7
推荐指数
1
解决办法
1990
查看次数

标签 统计

bazel ×2

c++ ×2

c ×1

code-generation ×1