bazel-c++

bazel项目

使用bazel构建C++项目,bazel项目的工程目录下必须包含一个WORKSPACE的空文件,其存在表示了项目的根目录所在。BUILD文件包含了构建规则。
常见的bazel+c++项目的文件结构:

.
├── add.cc
├── add.h
├── BUILD
├── main.cc
└── WORKSPACE

构建简单的bazel项目

构建helloworld项目:

  • hello.cc文件如下:
#include <iostream>
int main()
{
     std::cout << "Hello world" << std::endl;
     return 0;                                                                                                                                                                                            
 }

  • BUILD文件如下:
cc_library(
    name = "test",
    srcs = ["hello.cc"],                                                                                                                                                                                     
)
- name:工程的名字
- srcs:项目的源代码
  • 构建bazel build //:test
    • //: 构建项目所在的根目录(WORKSPACE所在目录),test为上面的cc_library指定的名称,输出如下:
INFO: Invocation ID: 4292b15c-ac1c-49d4-9a29-cbeea8cb2852
INFO: Analysed target //:test (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //:test up-to-date:
  bazel-bin/libtest.a
  bazel-bin/libtest.so
INFO: Elapsed time: 0.062s, Critical Path: 0.00s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action

输出文件存放在工程目录下的bazel-bin目录下。

构建包含头文件的工程

工程目录如下:

.
├── add.cc
├── add.h
├── BUILD
├── main.cc
└── WORKSPACE

add.cc文件:

#include "add.h"
int add(int a,int b)
{
    return a+b;
}

头文件add.h:

#ifndef ADD_H_
#define ADD_H_
int add(int a,int b);
#endif

main.cc文件:

#include <iostream>
#include "add.h"
int main()
{
    int a,b;
    std::cin>>a>>b;
    std::cout<<a<<"+"<<b<<" = "<<add(a,b);
    return 0;
}

构建文件:

cc_library(
    name = "add",
    srcs = ["add.cc"],
    hdrs = ["add.h"],
)
cc_binary(
    name = "math",
    srcs = ["main.cc"],
    deps = [
        ":add"
    ]
)

解释:

  • cc_library(name):库文件名称
  • cc_library(srcs):库文件的源文件
  • cc_library(hdrs):库文件的头文件
  • cc_binary(name):工程的名称
  • cc_binary(srcs):工程主代码
  • cc_binary(deps):依赖的库

构建代码:

bazel build //:math

查看依赖图:

xdot <(bazel query --nohost_deps --noimplicit_deps 'deps(//:math)' \
  --output graph)

依赖图如下:
Alt
源代码下载

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值