blade说明和使用

1.blade是什么?有什么优点?

(1)blade是什么
一个构建工具,根据BUILD文件构建目标,类似于make根据Makefile文件构建目标。
(2)blade优点:
先看makefile的缺点:

  • 间接依赖也需要在makefile里写明
  • 构建速度慢

blade优点:

  • 依赖自动传递,只需要写出直接依赖,间接的依赖blade为你搞定
  • 构建速度更快
  • 增量构建

2.blade怎么用

Blade 通过一系列的名字为 “BUILD” 的文件(文件名全大写),这些文件需要开发者去编写。每个 BUILD文件通过一组目标描述函数描述了一个目标的源文件,所依赖的其他目标,以及其他一些属性。
(1)项目结构

$ ls -1
BLADE_ROOT		// 在源代码的根目录下,也是项目的全局配置
common
thirdparty
xfs
your_project
...

(2)BUILD文件书写
BUILD文件写名要编译的target和target的描述,通俗理解相当于自我介绍。

使用比较多的target:cc_library、cc_binary、cc_test、proto_library。proto_library是proto buffer。

cc_library是编译成链接库,默认是静态链接库
srcs是源码,incs是增加编译源文件时的头文件查找路径,defs是用户定义的宏加入编译中deps是依赖的链接库,extra_cppflags是可以自定义的额外的C/C++编译flags。

cc_library(
    name = 'string',
    srcs = [
        'algorithm.cpp',
        'concat.cpp'
    ],
    incs = [
    	'../coommon'
    ],
    defs = ['POCO_OS_FAMILY_UNIX'],
    deps = ['//common/base:int', '#libpthread'],
    extra_cppflags = ['-std=gnu++11', '-Wno-sign-compare', '-Wno-non-virtual-dtor'],
)

风格建议:

  • incs头文件目录从根目录写起
  • 总是用单引号
  • 目标名用小写
  • src 里的文件名按字母顺序排列
  • deps 里先写本目录内的依赖(:target),后写其他目录内的(//dir:name),分别按字母顺序排列。

deps的格式:

  • ‘//path/to/dir:name’,path是从BLADE_ROOT出发的路径,name是依赖的目标库名,dir是name所在的目录
  • ':name’是当前BUILD文件内的target, path可以省略
  • '#lpthread’是系统库,直接写#跟名字即可

(3)blade命令行参数
blade build …:编译当前目录包含子目录
blade build :name:编译name target
blade clean:清除构建的目标和缓存

(4)辅助工具

  • fix-include-path.sh 自动修正c/c++文件中#include不带路径,改为带路径的写法
  • genlibbuild 假设当前目录是一个C/C++库,那么自动生成库的BUILD文件,库名为目录名,如果有test文件,自动生成相应的cc_test测试
  • lsrc 按srcs = 需要的格式列出当前目录下所有的C/C++源文件(不包含测试源文件例如*_test.cc)

Reference:
[1] github地址:https://github.com/chen3feng/blade-build
[2] 辅助工具地址:https://github.com/chen3feng/blade-build/tree/master/tool

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值