我正在使用bazel在Windows和Mac上构建一些C ++和C#sharp代码。我正在研究的项目分为两部分; gui部分(取决于平台)和库部分。该库与其他项目共享,因此将它们混合到一个大项目中可能不是一个好主意。
我必须使用genrule来构建GUI,但我找不到让它下载库的方法。 genrules不允许deps
,我找不到任何其他合适的方法让bazel做我需要的东西(除了混合部分,这是我真的不想做的)。< / p>
答案 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举个例子。