【bazel】调用yaml的so库

1. 简介

上一篇文章,我介绍了基于yaml库的源码完成对其库的调用,但是很多时候,我们已经有so文件了,这种情况下,如何使用bazel调用yaml的so文件呢?

2. 项目文件及内容

2.1 下载yaml源码

首先去github上下载yaml的库,链接如下所示:

GitHub - jbeder/yaml-cpp: A YAML parser and emitter in C++

下载完成之后,解压进入文件夹,

我们这里关注文件夹 include 和 src,以及文件 BUILD.bazel,后面会用到。

2.2 创建工作空间

我们创建一个bazel的工作空间,如下文件目录如下所示:

这里要强调一下,yaml库的头文件包括两部分,一部分就是在include/yaml-cpp文件夹下,另一部分在src文件夹下,在BUILD文件中,我们使用函数cc_import将这两部分头文件导入,一定要全部导入,否则会报错 "include/yaml-cpp/yaml.h"找不到。

(1)include文件就是yaml的头文件

(2)src就是yaml的src文件,这两个文件 标题2.1 下载yaml源码有介绍过,按理说只需要把src中的头文件拿出来就行,我这里偷懒了一下,全部拷贝过来了。

(3)lib文件中包含了yaml编译生成的so库libyaml-cpp.so.0.7

(4)main.cc的内容如下:

#include <iostream>
#include "include/yaml-cpp/yaml.h"
using namespace std;
int main() {
    YAML::Node config = YAML::LoadFile("/home/hello/code/test_code/bazel/bazel3/main/config/config.yaml");
    cout << "name:" << config["name"].as<string>() << endl;
    cout << "age:" << config["age"].as<string>() << endl;
    return 0;
}

(5)BUILD内容如下:

cc_binary(
    name = "main",
    includes = ["include"],
    srcs = ["main.cc"],
    deps = [":yaml-cpp"],
)


cc_import(
    name = "yaml-cpp",
    hdrs = glob(["include/**/*.h", "src/*.h"]),
    shared_library = "lib/libyaml-cpp.so.0.7",
)

其他的操作就不多做赘述了,都可以在上一篇文章【bazel】调用yaml库中找到相应的介绍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值