我正在使用 bazel 在 Windows 和 Mac 上构建一些 C++ 和 C# 清晰的代码。我正在做的项目分为两部分;gui 部分(取决于平台)和库部分。该库与其他项目共享,因此将它们混合到一个大项目中可能不是一个好主意。
我必须使用 genrule 来构建 GUI,但我找不到让它下载库的方法。genrules 不允许deps
,我找不到任何其他合适的方法让 bazel 做我需要的事情(除了混合部分,这是我真正不想做的)。
构建文件中的规则不直接取决于工作区规则(例如,http_archive
),而是取决于工作区规则下载或生成的规则。
例如,maven_jar
是一个工作区规则,它将下载一个 jar,并使用java_import
该 jar的规则创建一个构建文件。然后其他 java 规则可以依赖于java_import
as @name_of_maven_jar_rule//jar
。
该http_archive
工作空间规则同样下载档案,但它并没有产生一个build文件。因此,为了使用该存档中的任何内容,存档应该已经包含一个构建文件。然后,构建文件中的其他规则可以依赖于该存档中的内容,如@name_of_http_archive_rule//package_in_archive:target
.
有关示例,请参阅 https://docs.bazel.build/versions/master/be/workspace.html#http_archive。