如何使 genrule 依赖于外部 (http_archive)?

How do I make a genrule depend on an external (http_archive)?

我正在使用 bazel 在 Windows 和 Mac 上构建一些 C++ 和 C# 清晰的代码。我正在进行的项目分为两部分;一个 gui 部分(依赖于平台)和一个库部分。该库与其他项目共享,因此将它们混合到一个大项目中可能不是一个好主意。

我必须使用 genrule 来构建 GUI,但我找不到让它下载库的方法。 genrules 不允许 deps 并且我找不到任何其他合适的方法让 bazel 做我需要的事情(除了混合部件,这是我真的不想做的)。

构建文件中的规则不直接依赖于工作区规则(例如,http_archive),而是依赖于工作区规则下载或生成的规则。

例如,maven_jar 是一个工作区规则,它将下载一个 jar,并使用 java_import 规则为该 jar 创建一个构建文件。然后其他 java 规则可以依赖于 java_import 作为 @name_of_maven_jar_rule//jar.

http_archive 工作区规则类似地下载存档,但它不会生成构建文件。因此,为了使用该存档中的任何内容,该存档应该已经包含一个构建文件。然后,构建文件中的其他规则可以依赖于该存档中的内容,如 @name_of_http_archive_rule//package_in_archive:target.

https://docs.bazel.build/versions/master/be/workspace.html#http_archive 举个例子。