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
blade说明和使用相关推荐
- HP c3000/c7000 blade switch GBE2c 初始配置
端口概述 Port 1-16 是内联刀片的downlink口 Port 17-18 是switch互联用,默认是disable的 Port 19是给Blade On-board Administrat ...
- PHP遍历用blade标签表示,php-Laravel Blade {{$variable或’Default Text’}}无法使用网址
我有以下代码遍历用户帐户并显示它们: @foreach ($accounts as $account) 如果该帐户确实具有个人资料图片网址,则可以正确显示.但是,如果没有个人资料照片,则不会显示默认U ...
- 【blade利刃出鞘】一起进入移动端webapp开发吧
前言 在移动浪潮袭来的时候,小钗有幸进入框架组做webapp框架开发,过程中遇到了移动端的各种坑,也产生了各种激情,就我们公司的发展历程来说 第一阶段:使用传统方式开发移动站点,少量引入HTML5元素 ...
- 中兴c600olt数据配置_中兴上架Blade 20smart孝心版
今天,中兴推出了中兴Blade 20smart孝心版.此前这款机型已经有所曝光,比较引人注目的一点就是这款机型后置三摄模块的设计方式. 根据公布的图片,这款中兴Blade 20smart孝心版采用的是 ...
- 分享Laravel中blade页面更改没有及时显示在页面的问题解决方案
分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 参考文章: (1)分享Laravel中blade页面更改没有及时显示在页面的问题解决方案 (2)https://www.cnbl ...
- laravel使用的模板引擎 blade
使用blade引擎的话必须在控制器中使用use Blade 模板文件使用"模板名"+.blade.php结尾. 如home.blade.php 在模板中调用数组数据进行循环: ...
- laravel模板写php代码,Laravel框架之blade模板新手入门教程及小技巧
简介 Blade 是 Laravel 所提供的一个简单且强大的模板引擎.相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码.所有 Blade 视图都会被编译缓 ...
- Tencent Blade team荣获小米安全年度最佳守护者
11月29日,MIDC 2018小米AIoT开发者大会在北京召开,Tencent Blade Team由于对小米安全做出的重要贡献,荣获小米安全年度最佳守护者个人与团队两项大奖,并被聘为小米安全中心特 ...
- 腾讯Blade Team胡珀:IoT时代,“白帽子”以网为剑捍卫安全
10月10日至10月11日,第三届腾讯安全国际技术峰会(TenSec2018)在深圳顺利举办.由腾讯安全发起.腾讯安全科恩实验室与腾讯安全平台部联合主办,腾讯安全学院协办的TenSec 2018,邀请 ...
- 腾讯安全Blade团队亮相CanSecWest峰会
北京时间3月15日,世界顶级信息安全峰会CanSecWest于加拿大温哥华举办,来自腾讯安全平台部的Blade团队带来了手机基带相关的创新安全议题,这也是业内首次公开主流手机基带的研究方法及工具. C ...
最新文章
- 一只端午节鸭蛋粽子的背后:AI 与农业
- Amazon Aurora 升级, 兼容 PostgreSQL
- yield( )函数的使用
- C语言如何根据数据类型来处理不同的数据?
- jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)
- linux下dns设置详解
- loadrunner接口性能测试分享
- python批量读取csv并入库pg_如何通读CSV然后在Python中发布批量API调用
- SEO如何快速提高网站排名?
- Node JS环境设置– Node.js安装
- 内蒙古2021年高考成绩查询系统入口,2021年内蒙古高考成绩查询网址,内蒙古高考成绩查询系统时间安排...
- html 实现音乐的波形,GitHub - wanlixi/html5-audio: 展示html5提供的强大的音频控制API...
- Phaser学习笔记
- QuerySet,本质上是一个给定的模型的对象列表
- day1 -- ELMO语言模型
- 20230316 作业
- 微信小程序定位权限封装
- 计算机用户被停用,电脑教程:Windows7用户被停用解决方法
- 在一个老外微信PM的眼中,中国移动App UI那些事儿
- java nio netty 教程,4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了),netty实现...