02-bazel构建 C++ 项目(一)

在上一篇的基础之上开始学习如何用 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 单输出垂直结构的项目,下面需要搞一个有依赖关系的

你可能感兴趣的:(02-bazel构建 C++ 项目(一))