gpt4 book ai didi

bazel - 如何在不同的子项目中使用相同的文件组定义

转载 作者:行者123 更新时间:2023-12-02 20:21:59 31 4
gpt4 key购买 nike

我需要为一些子项目声明特定资源,我正在按照以下方式进行

filegroup(
name = "some_resources",
visibility = ["//:app"],
srcs = glob([
"src/my/resources/**/*.resources",
]),
)

但是,在任何子项目中,找到资源的路径都是相同的。我的问题是——在这种特殊情况下,最小化代码重复的最愚蠢(愚蠢?)的方法是什么?

基本上我想要有类似的东西相关子项目中的 hide_some_resources() 。

然后使该资源对每个应用程序可见。

最佳答案

您可以将文件组放入 .bzl 文件中的宏中,然后在相关子项目中加载并运行该宏。

所以类似:

workspace/resources.bzl:

def expose_some_resources():
native.filegroup(
name = "some_resources",
visibility = ["//:app"],
srcs = native.glob([
"src/my/resources/**/*.resources",
]),
)

工作区/子项目/BUILD:

load("//:resources.bzl", "expose_some_resources")
expose_some_resources()

您还可以考虑向宏添加一些错误检查,例如使用 native.existing_rule 检查每个包仅调用一次宏。 ,或检查 glob 是否返回 1 个或多个文件。

关于bazel - 如何在不同的子项目中使用相同的文件组定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51163825/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com