繁体   English   中英

如何在bazel中获取目标目录

[英]How do I get the target directory in bazel

我有一个生成一些输出文件的genrule ,但是我使用的工具需要知道将文件放置在何处。

到目前为止,我已经能够通过使用dirname $(location outputfile) ,但这似乎是一个非常脆弱的解决方案

您可以在以下genrule了解哪些make变量可用: https : genrule

尤其是:

@D:输出目录。 如果outs只有一个文件名,它将扩展到包含该文件的目录。 如果存在多个文件名,则即使所有生成的文件都属于同一子目录 ,该变量也会扩展到genfiles树中程序包的根目录! 如果genrule需要生成临时中间文件(可能是由于使用诸如编译器之类的其他工具的结果),则应尝试将临时文件写入@D (尽管/tmp也可写),并删除任何此类中间文件。生成的临时文件。 特别是,避免写入包含输入的目录-它们可能位于只读文件系统上,即使没有,也这样做会破坏源树。

通常,如果该工具允许您(或者如果您正在编写自己的工具),则最好为该工具提供单独的输入和输出文件名。 例如,如果该工具仅将输入理解为目录,并且如果该目录仅包含您想要的内容,那么通常就可以,但是如果目录不包含该内容,那么您就必须依靠沙箱来仅向该工具显示所需的文件,或者您必须手动创建临时目录。 将输出作为目录可以减少对输出命名的控制,并且您仍然必须枚举genrule outs的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM