Bazel应用方法
Bazel简单应用
在github上可以下载bazel官方的简单教程例子。
git clone https://github.com/bazelbuild/examples
该文件结构为:
1.创建工作空间workspace
工作空间是一个保留你工程的源文件以及Bazel build输出的目录。该工作空间可以是空的,或者里面包含一些外部依赖用于build。
创建方法为:指定一个目录作为Bazel工作空间,创建一个名为WORKSPACE
的空文件在该根目录下。
当Bazel编译工程时,所有的输入和依赖必须在相同的workspace下。
2.书写BUILD文件
一个BUILD文件包含几个不同类型的bazel指令。
最重要的类型是build rule
,告知Bazel如何去build想要的输出,比如execuatable binaries或者libraries。
每一个BUILD文件中的build rule
叫做一个target
,该target
指向对应的源文件或依赖集合。一个target
也可以指向其他target
。
参考examples/cpp-tutorial/stage1/main
目录下的一个简单的BUILD文件。里面仅包含一个target和一个build rule。
在这个例子中,hello-world
target示例cc_binaries规则,该规则告知Bazel根据hello-world.cc
源文件去build一个可执行binary。
其中targetsrc
表明Bazel build的target是哪个源文件。
3.编译工程
拿着教程的例子来尝试编译。将目录转到examples/cpp-tutorial/stage1
下,跑以下命令:
bazel build //main:hello-world
注意到target label,//main:
部分是该BUILD文件相对于workspace根目录的位置,hello-world
是我们命名的target。
之后Bazel会输出以下类似的消息:
INFO: Found 1 targe