系統要求
-
Win7及以上64位系統,推薦使用Win10,本文是在Win10上搭建的
-
內存至少8G
-
至少有20G的可用磁盤空間
安裝開發工具
-
使用 Visual studio 2017 (>=15.7.2) 來編譯代碼,也可以使用Visual studio 2019(>=16.0.0),官方更推薦使用2019
-
從官網下載 Visual Studio Community 2017,本文使用 Visual studio Community 2017 來搭建編譯環境:
-
Win+R 輸入cmd,在命令行中,切換到下載的VS2017安裝包文件所在的目錄,執行如下的命令安裝所需要的組件:
> VS_PATH_TO_INSTALLER.EXE --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATLMFC --includeRecommended
在VS2017的安裝界面,選擇單個組件並過濾win,去除Windows 10 SDK (17763版本)勾選框,然后點擊安裝,網速比較好應該有個10~15分鍾就可以安裝完成:
-
安裝完成后,先不要啟動VS2017,去VS官網下載版本>=10.0.19041的Windows 10 SDK,點我下載 19041版本安裝程序,並雙擊安裝,編譯WebRTC對Windows SDK的版本有最低的要求,這里必須勾選Debugging Tools for Windows:
安裝depot_tools
- 下載depot_tools解壓某個目錄,我這里是D盤根目錄,注意depot_tools所在目錄路徑不可以有空格,可能會導致拉取代碼報錯
- 添加depot_tools到系統環境變量,計算機 - 屬性 - 高級系統設置 - 環境變量,注意depot_tools直接添加到最前面:
- 也可以在Cmd命令行中設置,執行如下命令,這樣效果和上面是一致的,但這樣影響最小:
set PATH=D:\depot_tools;%PATH%
拉取WebRTC代碼
-
這時候需要准備一個FQ軟件,使的系統可以FQ,后面拉工具和代碼需要,如果有VPN,直接使用全局代理,若使用的是ss代理,通常是在命令行窗口中執行如下的命令:
set http_proxy=127.0.0.1:41091
set https_proxy=127.0.0.1:41091
-
然后執行gclient命令拉取相關的工具,過程的快慢和網速有關系,若工具拉取成功的話,執行gclient命令會顯示如下截圖的內容:
-
拉代碼前,需要配置git
git config --global user.name "My Name"
git config --global user.email "my-name@chromium.org"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global branch.autosetuprebase always
-
在命令行窗口中執行
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
命令,否則后面會拉取報錯,該命令的含義是告訴使用VS來編譯代碼 -
在命令行窗口中,cd切換到預留20G磁盤空間的目錄,執行如下命令,開始拉去WebRTC的代碼,過程很漫長~ 需要耐心等待,可能需要下載10G的東西,包括源碼、第三方庫、測試代碼,如果過程中失敗,則在命令行工具中執行gclient sync,若感覺長時間重復輸出一條命令,按ctrl+c可以停下來, 重新執行gclient sync 命令繼續:
mkdir webrtc-src
cd webrtc-src
fetch --nohooks webrtc
gclient sync
過程截圖:
出現這個錯誤,通常和網絡有關系,和FQ軟件不穩定有關系,失敗了執行gclient sysnc繼續重試:
出現這個錯誤,按照提示在命令行窗口中執行
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
命令后,在執行gclient sync繼續:
代碼拉取完成,nice~
編譯代碼
- 在命令行窗口執行如下的命令,設置一些環境變量:
set PATH=D:\depot_tools;%PATH%
set vs2017_install=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_GENERATORS=msvs-ninja,ninja
set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10
set GYP_MSVS_VERSION = 2017
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
生成工程
-
WebRTC使用Ninja來進行編譯,Ninja對應的配置是通過gn來生成的。由於我們需要使用vs進行代碼的調試,所以通過下面的命令生成Ninja的配置,並生成VS工程(Debug版本,工程文件位於
out\Default
目錄下的all.sln):cd src
gn gen --ide=vs out/Default
生成成功:
-
如果需要Release編譯,通過如下命令生成工程文件:
gn gen --ide=vs out/Default --args="is_debug=false"
-
可以使用
gn args out/Default --list
查看當前編譯參數
編譯
-
在src目錄下,執行下面的命令進行代碼的編譯,最終二進制會生成到out\Default目錄下:
ninja -C out/Default
開始編譯:
編譯成功:
代碼更新
-
后續的代碼更新,可以按照如下的步驟,需要切到src目錄下執行,記得要開代理:
git checkout master
git pull origin master
gclient sync
引入WebRTC庫
-
WebRTC編譯后會在
src\out\Default\obj
目錄下生成整個WebRTC工程的靜態庫:webrtc.lib,鏈接下這個就可以了如果VS應用沒配置Clang編譯器,鏈接這個webrtc.lib,生成工程文件時需要配置如下參數, 禁用clang與lld:
gn gen --ide=vs out/Default --args="is_clang=false use_lld=false"
總結
-
多虧網上的帖子幫助,才使得我順順利利的完成代碼的編譯,感謝前人為此付出的努力,點贊
-
代碼拉取過程還是比較坎坷,遇到問題要及時去互聯網上搜索。比較坑爹的是,gclient sync有時候會執行的卡住,命令行中一直重復提示在拉取third-party,后來自己感覺不對勁,在命令行窗口里按ctrl+c,重新執行gclient sync才繼續拉取,對於第一次搞這個,不熟悉的人,感覺還是好坑呀!