在实现bazel方面时,是否有一种方法可以获取工作空间根目录的绝对文件系统路径?

问题描述

我正在尝试在淡褐色方面实现clang compilation database的生成。看来此clang文件的“目录”字段必须指定为绝对路径。现在,当我尝试使用bazel方面生成此文件时,所有相关的bazel API都会在工作区中返回路径相对路径。

“工作空间根”是~/.cache/bazel/_bazel_<user>/<hash>/execroot/__main__

我想到了两种方法可以使这项工作有效:

  1. 使用ctx.actions.run_shell而不是ctx.actions.write生成文件,shell可以使用PWD评估沙箱$(realpath ../../../../../execroot/__main__)的工作区根路径。

我已经验证了此方法的有效性,但这绝对是不希望的方法,因为bazel无法保证沙箱工作路径与工作空间根目录之间的关系,因此很容易突破bazel版本。

  1. 使用脚本来生成文件。

由于所有编译命令信息仍然必须来自bazel方面,因此这会将文件的生成分为两部分,从而使其难以维护。

我考虑过的另一种方法,但看不到使它起作用的明显方法,就是以某种方式将__workspace_dir__文件中的WORKSPACE.bazel变量传递给方面上下文,但是我仍然找不到。 / p>

那么,有什么优雅的方法可以从方面实现上下文中获取此信息?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...