Broc面向c/c++語言的構(gòu)建工具
broc是一款面向c/c++語言的構(gòu)建工具,提供了編譯、分支依賴、依賴模塊下載等功能。不同于make, cmake等以庫文件鏈接的編譯方式,broc將依賴庫源代碼與程序源代碼一并同時進行編譯,這種方式可以避免程序源代碼與依賴庫編譯選項或平臺不一致導(dǎo) 致的軟件兼容性問題;broc支持編譯結(jié)束后自動運行單元測試用例;借助Jenkins broc還能完成軟件的持續(xù)集成。
優(yōu)勢
源碼編譯
broc支持將程序以及依賴庫從源碼狀態(tài)進行編譯,解決了c/c++程序因編譯選項、操作系統(tǒng)平臺或庫文件版本不同而造成的兼容性問題;代碼自動下載
broc支持自動checkout[依賴模塊][4]源代碼到本地然后進行編譯,用戶無需編寫控制腳本來實現(xiàn)此功能;分支依賴
broc支持指定依賴庫的主干、分支和TAG,broc能自動識別并解決庫文件傳遞性依賴問題;語法簡單
Makefile復(fù)雜的語法讓人望而卻步,而broc語法簡潔,易上手;增量編譯靠譜
make通過文件的修改時間來判斷文件是否需要進行再編譯,當(dāng)文件版本回滾后或編譯參數(shù)變更后,make不會對文件再次進行編譯;broc除了使用文件的修改時間,還基于文件內(nèi)容的哈希值以及編譯參數(shù)作為增量編譯的判斷標(biāo)準(zhǔn),增量編譯的準(zhǔn)確性會更高;支持protobuf
broc內(nèi)置對protobuf的支持,將proto文件編譯成靜態(tài)庫.a文件一步完成
安裝配置
系統(tǒng)要求
操作系統(tǒng)Linux
工具要求
Python
版本 >= 2.6.6, 建議使用2.7版本git
版本 >= 2.1.2svn
版本 >= 1.7gcc/g++
broc使用g++/gcc進行編譯,需要事先安裝好protobuf
broc使用了protobuf,自帶了protobuf的安裝包
安裝
下載代碼
git clone https://github.com/baidu/broc.git baidu/broc安裝protobuf
進入到tools目錄執(zhí)行sh install protobuf, protobuf被安裝在$HOME/protobuf目錄下處理proto文件
進入到tools目錄下面執(zhí)行sh install proto, 生成broc自用的py文件設(shè)置PATH
將broc的client目錄設(shè)置到PATH中, 例如:export PATH=$HOME/broc/client:$PATH
broc配置
broc安裝完后,執(zhí)行broc命令可以生成broc的配置文件,配置文件位于用戶的$HOME目錄下:~/.broc.rc 配置文件內(nèi)容:
[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名后綴
參數(shù)svn_repo_domain和git_repo_domain分別表示SVN和GIT代碼庫的域名,配置成自己域名即可。 一個依賴庫出現(xiàn)不同版本時需要對版本進行對比,確定編譯時要使用的依賴模塊版本; SVN管理的依賴模塊版本的對比是通過模塊的svn url來完成的,因此broc要求svn url有統(tǒng)一的命名方法。在SVN URL中進行了詳細說明,可以參照此方法根據(jù)自己的實際情況對 svn_postfix_branch, svn_postfix_tag進行配置。
使用手冊
https://github.com/baidu/broc/wiki/broc-tutorial
構(gòu)建規(guī)范
