我正在尝试编写一个bazel扩展名,该扩展名可以读取一些文件并生成其他文件。我正在使用JavaDoc和ctx.actions.declare_file函数来声明要生成的文件,然后声明生成这些文件的操作。到目前为止,一切都很好。
但是,当我尝试声明当前程序包之外的文件/目录时,Bazel抱怨。例如,假设我有一个源文件src = <source file foo/bar.proto>
,而当前规则在被规则//baz/proto:some_target
调用时正在执行。当我尝试如下声明生成的文件时
generated_src = ctx.actions.declare_file(src.basename, sibling=src)
Bazel抱怨说Output artifact 'foo/bar.proto' not under package directory 'baz/proto' for target '//baz/proto:some_target'
。请查看ctx.actions.declare_file
的文档,这是预期的。
我的问题是,还有其他方法来声明不在当前程序包中的文件吗?