如何解决如何在Bazel中使用文件的绝对路径
上下文:我正在尝试为https://github.com/tensorflow/tensorflow/issues/37861提供一个修复程序,其中手动列出了外部依赖项的头文件,但该列表是特定于版本的,因此无法保持最新。
发生了什么事
-
tf_http_archive(name = "com_google_protobuf",system_build_file = clean_dep("//third_party/systemlibs:protobuf.BUILD") ...)
被调用 -
tf_http_archive
是repository_rule
,实际上只有ctx.template("BUILD.bazel",ctx.attr.system_build_file,{...},False)
- 在
protobuf.BUILD
中有一个列表HEADERS = ["google/protobuf/any.pb.h",...]
,该列表传递给hdrs
个调用的cc_library
自变量 - 一个
genrule
将这些标头从$(INCLUDEDIR)
符号链接到$(@D)
(我对Bazel并不是很熟悉,但是IIUC是后者的内部内部构建目录,稍后使用)
由于我通常不熟悉Bazel,因此我只假设标头列表是必需的,并且存在$(INCLUDEDIR)/google/protobuf
文件夹,并且该文件夹在系统上的其他位置,例如。 /usr/local/include
。
是否可以通过全局文件或类似方式获取格式为*.h
的所有*.inc
和$(INCLUDEDIR)
文件? Bazel glob
函数不适用于绝对路径,因此无法使用。
我发现https://github.com/bazelbuild/bazel/issues/8846建议将new_local_repository
和build_file
设置为path
的{{1}}使用$(INCLUDEDIR)
,但我看不到如何将其应用于tf_http_archive
(具有某些条件来下载依赖项或仅使用system_build_file)。这似乎也可以避免符号链接(无论如何我还是非常怀疑,因为该文件夹是通过-iquote
添加的,但是包含样式是#include <...>
,请参见https://github.com/tensorflow/tensorflow/issues/37861中的评论)
为问题或想法做出贡献的人的奖励积分,为什么在native.cc_library
调用中似乎忽略了action_env环境变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。