在上一篇的基础之上开始学习如何用 bazel 构建一个简单的c++ 项目,也会深入了解一些 bazel 中的概念
ps:这里假定 已经成功在电脑上安装了 bazel 并且配置好了环境变量哦~
因为主要是讲理论,没有太多的涉及代码,如果大家想实际操作一下,可以区 github 上面下载 bazel 里面 有 example
第一步 建立项目工作空间 workspace
每一个 Bazel 项目的根目录下面都会有一个 workspace 文件,无论是不是空的,它用来标识当前目录是一个 bazel 项目,多个bazel项目之间是相互独立的。
在 workspace 根目录下面,会有一个或者多个 BUILD 文件,它是用来告诉 bazel 怎么把一个完整的项目分开构建。(一个包含了 BUILD 文件的目录叫做 包 package ,之后会涉及到)
第二部 编写 BUILD 文件
BUILD 文件包含了多种可以对 bazel 使用的命令。其中其中最重要的就是 构建规则命令,它告诉 bazel 怎么从源文件构建期望的输出结果(二进制可执行文件或者库)。
每一个在 BUILD 文件中的实例都叫做 一个目标(target),指向一些源文件和依赖项,也可以指向另外一个 target。
看一个构建库的Demo:
cc_binary( name = "hello-world", srcs = ["hello-world.cc"], )
这里 name=" hello-world" 便指定了一个构建 target,然后这个target 是以 cc_binary 的规则来构建的,使用的源文件就是 hello-world.cc啦~
这里简单说一下在 target 中是可以明确声明自己的依赖 和 选项。其中 name 是强制性的,但是其他的很多属性都是可选的
第三步 构建项目
一般 bazel 的构建命令大概是长这个样子的:
bazel build //path-to-your-build-target-dir:target
简单说一下 这里的 // 后面的内容就是指的是你要构建的 target 相对于根目录(workspace)的位置
构建完成后就可以在 workspace 目录下面找到 bazel 的输出文件 bazel-bin/~~~ 之类的然后就大功告成啦~
这里只是构建了单target 单package 单输出垂直结构的项目,下面需要搞一个有依赖关系的