WebRTC本地C++開(kāi)發(fā)基礎(chǔ)

本文以Linux/Mac平臺(tái)為例背捌,簡(jiǎn)單歸納總結(jié)WebRTC本地C++開(kāi)發(fā)的基本步驟拜隧。

1. 先決條件

Google使用一個(gè)腳本工具集depot_tools進(jìn)行代碼檢出伸头、下載管理酪术、代碼審查阶剑、代碼提交等日常開(kāi)發(fā)工作[1]吃沪。該工具集中的常用工具包括gclient汤善,gcl,git-cl票彪,repo等等红淡。在Linux/Mac平臺(tái)上安裝depot_tools工具集非常簡(jiǎn)單[2]:下載源代碼并添加到PATH中即可:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

需要注意的是,我們要把depot_tools放在PATH的最前端降铸,否則gcl命令會(huì)指向GNU Common Lisp編譯器在旱。另外,export這一句最好添加到.bashrc中推掸,這樣就不必每次都設(shè)置桶蝎。

對(duì)于Ubuntu/Debian系統(tǒng),除安裝depot_tools工具集谅畅,還有另外一項(xiàng)先決條件:在獲取WebRTC源代碼后登渣,需要運(yùn)行源代碼中的install-build-deps.sh腳本安裝一系列依賴軟件:

./build/install-build-deps.sh

對(duì)于Mac,只需要xcode版本大于5即可毡泻,推薦使用最新的xcode胜茧。

2. 獲取WebRTC源代碼

2.1 下載WebRTC源碼
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

WebRTC源碼的代碼量很大(PC平臺(tái)大概6.4GB),因?yàn)樾枰褂肅hromium的編譯工具鏈和第三方依賴庫(kù)仇味。整個(gè)下載過(guò)程尤其是gclient sync需要耐心等待呻顽。

2.2 配置及創(chuàng)建分支

假設(shè)我們?cè)趍aster分支上進(jìn)行開(kāi)發(fā)。首先我們需要針對(duì)分支作一些配置丹墨,包括如何合并遠(yuǎn)程分支芬位,是否需要自動(dòng)rebase,等等[3]:

git config branch.autosetupmerge always      // 自動(dòng)合并遠(yuǎn)程分支到本地分支带到。
git config branch.autosetuprebase always     // git pull時(shí)自動(dòng)rebase昧碉。

并創(chuàng)建本地master分支:

cd src
git checkout –b master origin/master
2.3 更新代碼

更新當(dāng)前分支:

git pull origin master

更新編譯工具鏈和第三方依賴庫(kù):

gclient sync

3. 編譯WebRTC

Ninja是WebRTC的默認(rèn)跨平臺(tái)編譯系統(tǒng)[4]英染,其構(gòu)建文件通過(guò)GN生成[5]。Ninja構(gòu)建文件默認(rèn)生成在out/Release被饿、out/Debug目錄下四康,當(dāng)然這個(gè)目錄是可以指定的。在src目錄下執(zhí)行如下命令狭握,可生成Debug版構(gòu)建文件:

gn gen out/Default

生成Release版構(gòu)建文件:

gn gen out/Release --args=”is_debug=false”

清理Ninja構(gòu)建文件:

gn clean out/Default
gn clean out/Release

編譯WebRTC源代碼:

ninja –C out/Default

共3500多個(gè)源文件闪金,編譯時(shí)長(zhǎng)視機(jī)器的性能而定,從幾分鐘到幾十分鐘不等论颅。gn也支持使用其他IDE構(gòu)建系統(tǒng)哎垦,例如在Mac上用xcode生成工程文件:

gn gen out/Default --ide=xcode

就會(huì)在out/Default下生成all.xcworkspace工程文件,用xcode打開(kāi)即可進(jìn)行編譯恃疯。

4. 在Release分支開(kāi)發(fā)

查看當(dāng)前已發(fā)布的所有Release分支:

gclient sync --with_branch_heads
git fetch origin
git branch –r

檢出branch 60分支進(jìn)行開(kāi)發(fā):

git checkout –b branch_60 refs/remotes/branch-heads/60
gclient sync

5. 總結(jié)

本文對(duì)WebRTC的本地C++開(kāi)發(fā)進(jìn)行總結(jié)漏设,是一個(gè)操作手冊(cè)。

參考文獻(xiàn)

[1] Using depot_tools:
http://dev.chromium.org/developers/how-tos/depottools
[2] Install depot_tools:
http://dev.chromium.org/developers/how-tos/install-depot-tools
[3] WebRTC Development: https://webrtc.org/native-code/development/
[4] Ninja: https://ninja-build.org/
[5] What is GN?
https://chromium.googlesource.com/chromium/src/+/master/tools/gn/README.md

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載今妄,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者郑口。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盾鳞,隨后出現(xiàn)的幾起案子犬性,更是在濱河造成了極大的恐慌,老刑警劉巖腾仅,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乒裆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡推励,警方通過(guò)查閱死者的電腦和手機(jī)缸兔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吹艇,“玉大人惰蜜,你說(shuō)我怎么就攤上這事∈苌瘢” “怎么了抛猖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鼻听。 經(jīng)常有香客問(wèn)我财著,道長(zhǎng),這世上最難降的妖魔是什么撑碴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任撑教,我火速辦了婚禮,結(jié)果婚禮上醉拓,老公的妹妹穿的比我還像新娘伟姐。我一直安慰自己收苏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布愤兵。 她就那樣靜靜地躺著鹿霸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秆乳。 梳的紋絲不亂的頭發(fā)上懦鼠,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音屹堰,去河邊找鬼肛冶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扯键,可吹牛的內(nèi)容都是我干的睦袖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忧陪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了近范?” 一聲冷哼從身側(cè)響起嘶摊,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎评矩,沒(méi)想到半個(gè)月后叶堆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斥杜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年虱颗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔗喂。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忘渔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缰儿,到底是詐尸還是另有隱情畦粮,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布乖阵,位于F島的核電站宣赔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瞪浸。R本人自食惡果不足惜儒将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望对蒲。 院中可真熱鬧钩蚊,春花似錦贡翘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诱渤,卻和暖如春丐巫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺美。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工递胧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赡茸。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓缎脾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親占卧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遗菠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 注1:本文檔適用于webrtc和webrtc-android源碼的下載和編譯; 注2:下載編譯所使用的操作系統(tǒng)為U...
    孤獨(dú)的創(chuàng)作者閱讀 9,547評(píng)論 0 7
  • 每到下雨天休息的時(shí)候华蜒,我就特別開(kāi)心辙纬,不用去想今天去哪兒玩,明天去哪兒玩叭喜,窩在家里做做自己喜歡的事情贺拣,比如:睡覺(jué)...
    我要賺42元閱讀 399評(píng)論 0 1
  • 祈愿通過(guò)學(xué)習(xí)和實(shí)踐金剛智慧,實(shí)現(xiàn)自我成長(zhǎng)捂蕴,妥善處理家庭關(guān)系譬涡,社會(huì)關(guān)系,成為智慧的榜樣啥辨,并且通過(guò)幫助更多的人讓世界變...
    瑩火蟲(chóng)兒閱讀 112評(píng)論 0 0
  • 有的車主喜歡駕車自駕游涡匀,在出發(fā)之前,請(qǐng)不要忘了給前風(fēng)擋玻璃做一下簡(jiǎn)單的養(yǎng)護(hù)溉知,這樣不僅可以給你帶來(lái)良好的視野渊跋,還能減...
    愛(ài)車久久閱讀 252評(píng)論 0 0
  • 在我們?nèi)粘I钪校倳?huì)遇到神一般的人着倾,天地玄黃拾酝,宇宙洪荒,總是能把天聊壞了卡者。 01 不分場(chǎng)合蒿囤。午飯后剛上完大號(hào),在...
    入興貴賢閱讀 267評(píng)論 0 1