Blade - 腾讯开源的构建系统 c/c++编译环境

Blade是由腾讯台风云计算平台推出的构建工具,旨在提供快速的软件构建体验。它不仅支持C/C++语言,还包含了单元测试、性能测试等功能,能进行并行编译和缓存中间结果。Blade的简洁语法使得学习和使用变得简单,通过cc_library等规则定义项目结构。此外,Blade还支持依赖查询、静态代码审查,是代码管理和团队协作的利器。
摘要由CSDN通过智能技术生成
typhoon-blade

Blade is an advanced building system developed with python, majorly for C/C++

Blade 是一个现代构建系统,期望的目标是强大而好用,把程序员从构建的繁琐中解放出来。

Blade主要定位于linux下的大型C++项目,密切配合研发流程,比如单元测试,持续集成,覆盖率统计等。但像unix下的文本过滤程序一样,保持相对的独立性,可以单独运行。目前重点支持i386/x86_64 Linux,未来可以考虑支持其他的类unix系统。

在腾讯公司“台风”云计算平台开发过程中,为了解决 GNU Make,Autotools 的难用和繁琐的问题,我们开发了这个全新的构建系统,整个系统基于多个声明式的构建脚本,在构建脚本里,只需要声明要构建什么目标,目标的源代码,以及其直接依赖的其他目标,不需要说明如何构建。大大降低了使用难度,提高了开发效率。

首先,Blade解决了依赖问题。 当你在构建某些目标时,头文件有变化,会自动重新构建。 最方便的是,Blade也能追踪库文件的依赖关系。比如 库 foo 依赖库 common,那么在库 foo 的 BUILD 文件中列入依赖:

  1. cc_library(
  2.     name = 'foo',
  3.     srcs = ...
  4.     deps = ':common'
  5. )
复制代码
那么对于使用foo的程序,如果没有直接用到common,那么久只需要列出foo,并不需要列出common。

  1. cc_binary(
  2.     name = 'my_app',
  3.     srcs = ...
  4.     deps = ':foo'
  5. )
复制代码
这样当你的库实现发生变化,增加或者减少库时,并不需要通知库的用户一起改动,Blade自动维护这层间接的依赖关系。当构建my_app时,也会自动检查foo和common是否也需要更新。

说道易用性,除了依赖关系的自动维护,Blade还可以做到,只要一行命令,就能把整个目录树的编译连接单元测试就可以全部搞定。例如:

递归构建和测试common目录下所有的目标
  1. $ blade test common...
复制代码
以32位模式构建和测试
  1. $ blade test -m32 common...
复制代码
以调试模式构建和测试
  1. $ blade test -pdebug common...
复制代码
显然,你可以组合这些标志
  1. $ blade test -m32 -pdebu
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值