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

blade说明和使用相关推荐

  1. HP c3000/c7000 blade switch GBE2c 初始配置

    端口概述 Port 1-16 是内联刀片的downlink口 Port 17-18 是switch互联用,默认是disable的 Port 19是给Blade On-board Administrat ...

  2. PHP遍历用blade标签表示,php-Laravel Blade {{$variable或’Default Text’}}无法使用网址

    我有以下代码遍历用户帐户并显示它们: @foreach ($accounts as $account) 如果该帐户确实具有个人资料图片网址,则可以正确显示.但是,如果没有个人资料照片,则不会显示默认U ...

  3. 【blade利刃出鞘】一起进入移动端webapp开发吧

    前言 在移动浪潮袭来的时候,小钗有幸进入框架组做webapp框架开发,过程中遇到了移动端的各种坑,也产生了各种激情,就我们公司的发展历程来说 第一阶段:使用传统方式开发移动站点,少量引入HTML5元素 ...

  4. 中兴c600olt数据配置_中兴上架Blade 20smart孝心版

    今天,中兴推出了中兴Blade 20smart孝心版.此前这款机型已经有所曝光,比较引人注目的一点就是这款机型后置三摄模块的设计方式. 根据公布的图片,这款中兴Blade 20smart孝心版采用的是 ...

  5. 分享Laravel中blade页面更改没有及时显示在页面的问题解决方案

    分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 参考文章: (1)分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 (2)https://www.cnbl ...

  6. laravel使用的模板引擎 blade

    使用blade引擎的话必须在控制器中使用use   Blade 模板文件使用"模板名"+.blade.php结尾. 如home.blade.php 在模板中调用数组数据进行循环: ...

  7. laravel模板写php代码,Laravel框架之blade模板新手入门教程及小技巧

    简介 Blade 是 Laravel 所提供的一个简单且强大的模板引擎.相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码.所有 Blade 视图都会被编译缓 ...

  8. Tencent Blade team荣获小米安全年度最佳守护者

    11月29日,MIDC 2018小米AIoT开发者大会在北京召开,Tencent Blade Team由于对小米安全做出的重要贡献,荣获小米安全年度最佳守护者个人与团队两项大奖,并被聘为小米安全中心特 ...

  9. 腾讯Blade Team胡珀:IoT时代,“白帽子”以网为剑捍卫安全

    10月10日至10月11日,第三届腾讯安全国际技术峰会(TenSec2018)在深圳顺利举办.由腾讯安全发起.腾讯安全科恩实验室与腾讯安全平台部联合主办,腾讯安全学院协办的TenSec 2018,邀请 ...

  10. 腾讯安全Blade团队亮相CanSecWest峰会

    北京时间3月15日,世界顶级信息安全峰会CanSecWest于加拿大温哥华举办,来自腾讯安全平台部的Blade团队带来了手机基带相关的创新安全议题,这也是业内首次公开主流手机基带的研究方法及工具. C ...

最新文章

  1. 一只端午节鸭蛋粽子的背后:AI 与农业
  2. Amazon Aurora 升级, 兼容 PostgreSQL
  3. yield( )函数的使用
  4. C语言如何根据数据类型来处理不同的数据?
  5. jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)
  6. linux下dns设置详解
  7. loadrunner接口性能测试分享
  8. python批量读取csv并入库pg_如何通读CSV然后在Python中发布批量API调用
  9. SEO如何快速提高网站排名?
  10. Node JS环境设置– Node.js安装
  11. 内蒙古2021年高考成绩查询系统入口,2021年内蒙古高考成绩查询网址,内蒙古高考成绩查询系统时间安排...
  12. html 实现音乐的波形,GitHub - wanlixi/html5-audio: 展示html5提供的强大的音频控制API...
  13. Phaser学习笔记
  14. QuerySet,本质上是一个给定的模型的对象列表
  15. day1 -- ELMO语言模型
  16. 20230316 作业
  17. 微信小程序定位权限封装
  18. 计算机用户被停用,电脑教程:Windows7用户被停用解决方法
  19. 在一个老外微信PM的眼中,中国移动App UI那些事儿
  20. java nio netty 教程,4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了),netty实现...

热门文章

  1. 基于神经网络——鸢尾花识别(Iris)
  2. 【高等数学】加减关系下可以用等价无穷小替换的情况
  3. 计网第三章复习(数据链路层)
  4. MySQL引擎之Memory
  5. 关键词单数和复数,ASO排名差距居然这么大
  6. Python计算机视觉编程第七章 图像搜索
  7. 2022 CSP-J 复赛题解
  8. 申请赴美签证的经历:一分钟通过面试
  9. 供意图转战手机平台的掌机开发者参考的10点建议
  10. 缘分的本质:量子纠缠