在Bazel中,genrule规则可以使用$(GENDIR)
变量来引用临时目录。$(GENDIR)
是一个Bazel内置的变量,它表示当前genrule规则的临时目录。
下面是一个示例,展示了如何在genrule规则中使用$(GENDIR)
变量:
genrule(
name = "my_genrule",
srcs = ["my_script.sh"],
outs = ["output.txt"],
cmd = "$(GENDIR)/my_script.sh $(SRCS) $(OUTS)",
)
在上面的示例中,genrule规则名为my_genrule
,它将my_script.sh
作为输入,并生成output.txt
作为输出。$(GENDIR)/my_script.sh
表示my_script.sh
位于临时目录中。$(SRCS)
和$(OUTS)
分别表示输入和输出文件列表。
请注意,$(GENDIR)
是一个相对路径,它指向当前genrule规则的临时目录。它是一个自动生成的目录,可能会在每次构建时更改。因此,您应该避免将$(GENDIR)
目录中的文件添加到版本控制系统中。
希望这可以解决您的问题!