Bazel介绍——创建一个C++项目

使用Bazel构建

设置工作区(workspace)

在构建项目之前,需要设置其工作区。 工作区是保存项目源文件和Bazel构建输出的目录。 它还包含Bazel认为特殊的文件:

  • WORKSPACE文件将目录及其内容标识为Bazel工作区,并居住在项目目录结构的根目录,

  • 一个或多个BUILD文件,它告诉Bazel如何构建项目的不同部分。 (工作空间中包含BUILD文件的目录是一个包,您将在本教程中稍后了解包。)

要将目录指定为Bazel工作区,请在该目录中创建一个名为WORKSPACE的空文件。

当Bazel构建项目时,所有输入和依赖项必须在同一个工作空间中。 驻留在不同工作空间中的文件彼此独立,除非已经链接,这超出了本教程的范围。

了解BUILD文件

BUILD文件包含Bazel的几种不同类型的说明。 最重要的类型是构建规则,它告诉Bazel如何构建所需的输出,如可执行二进制文件或库。 BUILD文件中的构建规则的每个实例都称为目标,并指向一组特定的源文件和依赖关系。 目标也可以指向其他目标。

看看cpp-tutorial / stage1 / main目录下的BUILD文件:

cc_binary(
    name = "hello-world",
    srcs = ["hello-world.cc"],
)

在我们的例子中,hello-world目标实例化了Bazel的内置cc_binary规则。 该规则告诉Bazel从没有依赖关系的hello-world.cc源文件构建一个自包含的可执行二进制文件。

目标中的属性显式声明其依赖关系和选项。 虽然name属性是必需的,但很多是可选的。 例如,在hello-greet目标中,name是不言自明的,srcs指定Bazel构建目标的源文件。

建设项目

我们来构建您的示例项目。 更改为cpp-tutorial / stage1目录并运行以下命令:

bazel build // main:hello-world

注意目标标签 - // main:part是我们的BUILD文件相对于工作空间根目录的位置,hello-world是我们在BUILD文件中命名的目标。 (本教程结尾将更详细地了解目标标签。)

Bazel产生的输出类似于以下内容:

INFO: Found 1 target...
Target //main:hello-world up-to-date:
  bazel-bin/main/hello-world
INFO: Elapsed time: 2.267s, Critical Path: 0.25s

恭喜,您刚刚建立了您的第一个Bazel目标! Bazel将构建输出放在工作区根目录下的bazel-bin目录中。 浏览其内容,了解Bazel的输出结构。

现在测试你新建的二进制文件:

bazel-bin/main/hello-world
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值