如何创建一个genrule取决于外部(http_archive)?

时间:2018-01-26 11:52:36

标签: bazel

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

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

1 个答案:

答案 0 :(得分:4)

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

例如,maven_jar是一个工作区规则,它将下载一个jar,并为jar创建一个带有java_import规则的构建文件。那么其他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举个例子。