面向c/c++语言的构建工具 Broc

Apache-2.0
Python 查看源码»
Linux
百度
2016-03-28
诺克萨斯

broc是一款面向c/c++语言的构建工具,提供了编译、分支依赖、依赖模块下载等功能。不同于make, cmake等以库文件链接的编译方式,broc将依赖库源代码与程序源代码一并同时进行编译,这种方式可以避免程序源代码与依赖库编译选项或平台不一致导 致的软件兼容性问题;broc支持编译结束后自动运行单元测试用例;借助Jenkins broc还能完成软件的持续集成

优势

  • 源码编译
    broc支持将程序以及依赖库从源码状态进行编译,解决了c/c++程序因编译选项、操作系统平台或库文件版本不同而造成的兼容性问题;

  • 代码自动下载
    broc支持自动checkout[依赖模块][4]源代码到本地然后进行编译,用户无需编写控制脚本来实现此功能;

  • 分支依赖
    broc支持指定依赖库的主干、分支和TAG,broc能自动识别并解决库文件传递性依赖问题;

  • 语法简单
    Makefile复杂的语法让人望而却步,而broc语法简洁,易上手;

  • 增量编译靠谱
    make通过文件的修改时间来判断文件是否需要进行再编译,当文件版本回滚后或编译参数变更后,make不会对文件再次进行编译;broc除了使用文件的修改时间,还基于文件内容的哈希值以及编译参数作为增量编译的判断标准,增量编译的准确性会更高;

  • 支持protobuf
    broc内置对protobuf的支持,将proto文件编译成静态库.a文件一步完成

安装配置

系统要求

  • 操作系统Linux

工具要求

  • Python
    版本 >= 2.6.6, 建议使用2.7版本

  • git
    版本 >= 2.1.2

  • svn
    版本 >= 1.7

  • gcc/g++
    broc使用g++/gcc进行编译,需要事先安装好

  • protobuf
    broc使用了protobuf,自带了protobuf的安装包

安装

  • 下载代码
    git clone https://github.com/baidu/broc.git baidu/broc

  • 安装protobuf
    进入到tools目录执行sh install protobuf, protobuf被安装在$HOME/protobuf目录下

  • 处理proto文件
    进入到tools目录下面执行sh install proto, 生成broc自用的py文件

  • 设置PATH
    将broc的client目录设置到PATH中, 例如:export PATH=$HOME/broc/client:$PATH

broc配置

broc安装完后,执行broc命令可以生成broc的配置文件,配置文件位于用户的$HOME目录下:~/.broc.rc 配置文件内容:

[repo]
svn_repo_domain = https://github.com
git_repo_domain = https://github.com
svn_postfix_branch = BRANCH
svn_postfix_tag = PD_BL

  • svn_repo_domain     svn仓库域名

  • git_repo_domain     git仓库域名

  • svn_postfix_branch  svn url中branch名后缀

  • svn_postfix_tag     svn url中tag名后缀

参数svn_repo_domain和git_repo_domain分别表示SVN和GIT代码库的域名,配置成自己域名即可。 一个依赖库出现不同版本时需要对版本进行对比,确定编译时要使用的依赖模块版本; SVN管理的依赖模块版本的对比是通过模块的svn url来完成的,因此broc要求svn url有统一的命名方法。在SVN URL中进行了详细说明,可以参照此方法根据自己的实际情况对 svn_postfix_branch, svn_postfix_tag进行配置。

使用手册

https://github.com/baidu/broc/wiki/broc-tutorial

构建规范

https://github.com/baidu/broc/wiki/broc-manual

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

百度的71款开源软件

插件: SlipHover(jQuery遮罩插件) wBox(jQuery的弹窗插件) 服务器: Heisenberg(百度mysql分库分表中间件服务器)无语言限制,mysqlclient、c、Java等都可以使用。 解决方案: baidu ...

2016/11/14 13:41
135
0
深入浅出 ES6:ES6 与 Babel / Broccoli 的联用

**[深入浅出 ES6 ](https://hacks.mozilla.org/category/es6-in-depth/)指的是添加在 ECMASript 标准第六版中的 JavaScript 编程语言的新特性,简称为 ES6。** 虽然 ES6 刚刚到来,但是人们已...

2016/03/09 10:29
14
3
[转] Valgrind使用

调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2. 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz2 3. 解压后生成目录valgrin...

04/08 19:54
1
0
分析151个后缀在各大考纲词汇中的作用(一)

CET4、CET6、GRE、IELTS、TOEFL、考研英语总的词汇量为14055,分析后缀数为151,有9525个单词分布在这些后缀中,剩下的4530个词汇没有任何后缀信息。

2015/03/26 22:40
254
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部