一般概念

WORKSPACE

工作目录是一个包含你要编译的源代码文件的文件夹,也包含了一些用于指明编译目标存储的快捷方式,如:bazel-in、bazel-out。每个工作目录包含一个可以为空的文本文件WORKSPACE,用于指明编译项目的根路径,在我们的快速入门中这个路径就是JingoalBuild。在WORKSPACE中可以添加一些构建选项指明外部依赖,详细内容可以看这里

Packages

Package是bazel编译的基本组织单元,一个package就是一个包含BUILD文件的文件夹,其中包含了源代码,源代码可以以任意文件夹层次在package中组织。在我们的快速入门中,根文件夹的组织形式如下:

  JingoalBuild/HelloBazel/BUILD
  JingoalBuild/HelloBazel/HelloBazel/ViewController.m
  JingoalBuild/HelloBazel/HelloBazel/AppDelegate.m

  JingoalBuild/AFNetworking/BUILD
  JingoalBuild/AFNetworking/AFNetworking/ViewController.m
  JingoalBuild/AFNetworking/AFNetworking/AppDelegate.m

在我们的文件结构中两个Package:HelloBazel和AFNetworking,HelloBazel/HelloBazel不是一个package因为里面不含有BUILD文件,但是可以使用上层package进行定位。

Targets

Package中包含的编译规则称为Target.在我们的快速入门中出现的objc_library、ios_application等规则均为Target.

Labels

属于一个Package的Target可以使用Label来定位,简单来说一个Label描述了一个规则的位置及名称。在我们的快速入门中根文件夹下有两个Packages.如果想访问AFNetworking下的objc_library,可以使用//AFNetworking:AFNetworkingLib,冒号左边是位置路径,"//"指明跟路径,冒号右边是需要引用的Target名称。