在Windows系統下編譯WebRTC


系統要求

  • 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 來搭建編譯環境:
    image-20211110222951966

  • 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分鍾就可以安裝完成:

    image-20211110223532378

  • 安裝完成后,先不要啟動VS2017,去VS官網下載版本>=10.0.19041的Windows 10 SDK,點我下載 19041版本安裝程序,並雙擊安裝,編譯WebRTC對Windows SDK的版本有最低的要求,這里必須勾選Debugging Tools for Windows:
    image-20211110224909338

安裝depot_tools

  • 下載depot_tools解壓某個目錄,我這里是D盤根目錄,注意depot_tools所在目錄路徑不可以有空格,可能會導致拉取代碼報錯
  • 添加depot_tools到系統環境變量,計算機 - 屬性 - 高級系統設置 - 環境變量,注意depot_tools直接添加到最前面:
    image-20211111230231216
  • 也可以在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命令會顯示如下截圖的內容:
    image-20211111231041101

  • 拉代碼前,需要配置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

    過程截圖:

    image-20211111233346528

    出現這個錯誤,通常和網絡有關系,和FQ軟件不穩定有關系,失敗了執行gclient sysnc繼續重試:
    image-20211111233611154

    出現這個錯誤,按照提示在命令行窗口中執行 set DEPOT_TOOLS_WIN_TOOLCHAIN=0命令后,在執行gclient sync繼續:
    image-20211112093924507

    代碼拉取完成,nice~

    image-20211112102445827

編譯代碼

  • 在命令行窗口執行如下的命令,設置一些環境變量:

    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

    生成成功:image-20211112144507475

  • 如果需要Release編譯,通過如下命令生成工程文件:

    gn gen --ide=vs out/Default --args="is_debug=false"

  • 可以使用gn args out/Default --list查看當前編譯參數

編譯

  • 在src目錄下,執行下面的命令進行代碼的編譯,最終二進制會生成到out\Default目錄下:

    ninja -C out/Default

    開始編譯:
    image-20211112144759712

    編譯成功:
    image-20211112150944702

代碼更新

  • 后續的代碼更新,可以按照如下的步驟,需要切到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"

總結

  • 多虧網上的帖子幫助,才使得我順順利利的完成代碼的編譯,感謝前人為此付出的努力,點贊

    Windows平台WebRTC編譯(持續更新)- 劍痴乎

    chromium編譯官方文檔

  • 代碼拉取過程還是比較坎坷,遇到問題要及時去互聯網上搜索。比較坑爹的是,gclient sync有時候會執行的卡住,命令行中一直重復提示在拉取third-party,后來自己感覺不對勁,在命令行窗口里按ctrl+c,重新執行gclient sync才繼續拉取,對於第一次搞這個,不熟悉的人,感覺還是好坑呀!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM