问题描述
我正在尝试在淡褐色方面实现clang compilation database的生成。看来此clang文件的“目录”字段必须指定为绝对路径。现在,当我尝试使用bazel方面生成此文件时,所有相关的bazel API都会在工作区中返回路径相对路径。
“工作空间根”是~/.cache/bazel/_bazel_<user>/<hash>/execroot/__main__
。
我想到了两种方法可以使这项工作有效:
- 使用
ctx.actions.run_shell
而不是ctx.actions.write
生成文件,shell可以使用PWD
评估沙箱$(realpath ../../../../../execroot/__main__)
的工作区根路径。
我已经验证了此方法的有效性,但这绝对是不希望的方法,因为bazel无法保证沙箱工作路径与工作空间根目录之间的关系,因此很容易突破bazel版本。
- 使用脚本来生成文件。
由于所有编译命令信息仍然必须来自bazel方面,因此这会将文件的生成分为两部分,从而使其难以维护。
我考虑过的另一种方法,但看不到使它起作用的明显方法,就是以某种方式将__workspace_dir__
文件中的WORKSPACE.bazel
变量传递给方面上下文,但是我仍然找不到。 / p>
那么,有什么优雅的方法可以从方面实现上下文中获取此信息?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)