1.5.1 Bazel 使用之基本流程

本节将分别演示 C++ 和 Python 中Bazel 的基本使用流程。

1. C++实现

1.新建project目录

在demo_base_bazel 目录下新建目录 pro1_helloworld,再在 pro1_helloworld 目录下新建WORKSPACE 文件。

2.新建包目录

在 pro1_helloworld 目录下新建 demo_pkg 目录,该目录下新建 BUILD 文件。

3.新建源文件

在 demo_pkg 目录下新建 c++ 源文件 hello_world.cc,编写内容如下:

#include <iostream>

using namespace std;

int main(int argc, char const *argv[])
{
    cout << "hello world" << endl;
    return 0;
}​
4.编辑BUILD文件

编辑BUILD文件,编写内容如下:

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

参数:

  • name 可执行文件
  • srcs 源文件
5.编译

终端下先进入项目目录,也即pro1_helloworld,常用编译方式有两种。

编译方式1:

bazel build //demo_pkg/...

上述命令是指编译 demo_pkg 包下的所有程序,“//” 指代项目根目录(也即pro1_helloworld),或者也可以不使用"//"。

编译方式2:

bazel build //demo_pkg:hello

上述命令是指编译 demo_pkg 包下名为 hello(语法格式为"包名:目标名") 的程序。

6.执行

编译完成后,在 pro1_helloworld 目中,会生成一些中间文件,其中 bazel-bin 中有对应的可执行文件,运行该文件即可,常用执行方式有两种:

执行方式1:

./bazel-bin/demo_pkg/hello

执行方式2:

bazel run demo_pkg:hello

运行结果:在终端输出文本 hello world。

两种执行方式比较,方式1只是执行,后者既编译又执行。

2. Python实现

1.新建project目录

参考 C++ 实现,或者可以直接复用 C++ 实现,本处采用后者。

2.新建包目录

参考 C++ 实现,或者可以直接复用 C++ 实现,本处采用后者。

3.新建源文件

在 demo_pkg 目录下新建 python 源文件 hello_world_py.py,编写内容如下:

#!/usr/bin/env python3

if __name__ == "__main__":
    print("hello world (py)")
4.编辑BUILD文件

编辑BUILD文件,编写内容如下:

py_binary(
    name = "hello_world_py",
    srcs = ["hello_world_py.py"],
)

参数:

  • name 可执行文件
  • srcs 源文件
5.编译

终端下先进入项目目录,也即pro1_helloworld,常用编译方式有两种。

编译方式1:

bazel build //demo_pkg/...

上述命令是指编译 demo_pkg 包下的所有程序,“//” 指代项目根目录(也即pro1_helloworld),或者也可以不使用"//"。

编译方式2:

bazel build //demo_pkg:hello_world_py

上述命令是指编译 demo_pkg 包下名为 hello_world_py(需要参考 BUILD 文件) 的程序。

6.执行

编译完成后,在 pro1_helloworld 目中,会生成一些中间文件,其中 bazel-bin 中有对应的可执行文件,运行该文件即可,常用执行方式有两种:

执行方式1:

./bazel-bin/demo_pkg/hello_world_py

执行方式2:

bazel run demo_pkg:hello_world_py

运行结果:在终端输出文本 hello world (py)。

results matching ""

    No results matching ""