WebRTC源碼開發(一)MacOS下源碼下載、編譯及Demo運行


工作需要測試網絡傳輸算法,逐學習WebRTC源碼

工作環境

Mac OS 10.14
Xcode 10.2.1

源碼下載

從google(需要【你懂的】)

  1. 首先【你懂的】
  2. 打開終端,輸入curl www.google.com看能不能返回正確的html數據,有的【你懂的】手段只有瀏覽器能翻過去,但是終端不行,這樣沒法安裝
  3. 按照官方教程,一步步輸入命令:
    mkdir webrtc-checkout
    cd webrtc-checkout
    fetch --nohooks webrtc
    gclient sync
    
  4. 漫長的等待后源碼下載完成,創建自己的brantch,用於git版本控制:
    cd src
    git checkout master
    git new-branch your-branch-name
    
  5. 如果需要更新源碼:(還沒試過)
    git checkout master
    git pull origin master
    gclient sync
    git checkout my-branch
    git merge master
    

從別人下載好的源碼

這個可能可以從github、CSDN等地方找到吧,我沒試

編譯源碼

生成Ninja文件

google的大項目的編譯首先會通過gn工具來組織項目的編譯,約等同於Cmake吧,BUILD.gn大概扮演了CMakeList.txt的角色
它會根據你的目標環境(比如不同操作系統之類的),生成相應的Ninja文件,約等於Makefile的作用。
gn+NinjaCMake+makefile的優勢是速度快,尤其是改動很小的時候

gn gen out/Default

就能生成Ninja文件了,GN的文檔里還有很多參數的介紹,可以使用--ide選項來生成對應IDE的項目文件。
由於CLION用不了,所以用了Xcode,命令如下:

gn gen out/Default --ide="xcode" --workplace="audio_fec"

如果想清空某次生成的Ninja文件,使用:

gn clean out/Default

利用Ninja進行編譯

ninja -C out/Default

這時候!!!!!有bug!!!!

吐槽一下找bug歷程:
懵逼了幾個月,后來突然看到有一句but the deployment target is 10.10.0,我就在想,這個deployment target是在哪設置的呢?往上一看,命令行里有一句-mmacosx-version-min=10.10.0
ok,這個命令是在哪出來的呢?還記得ninja文件有makefile的作用嘛,那估計是在ninja文件里。出bug的.oobj/examples/apprtc_signaling/ARDSettingsModel.o,所以去out/Default/obj/examples下面看到了apprtc_signaling.ninja文件,命令行里的這句話果然是在這里定義的,但是找到了ninja文件並沒有什么卵用
ninja文件是gn產生的,所以要看gn文件,找到出問題的src/examples/objc/下面的BUILD.gn,一打開就看到這個:

好吧,那macos版本信息估計在這個rules.gni里了,打開之后發現估計在base_rules.gni里,打開這個文件之后:

ok,那估計就在這個mac_sdk.gni里了
打開來之后終於看到了曙光!

找到src/build/config/mac/mac_sdk.gni文件,打開來長成這樣:(截圖是我改過之后的)

,把mac_deployment_target10.10.0改成10.11.0就可以了,保存之后clean,然后再用gn gen生成一次ninja文件,最后再用ninja編譯,就沒問題了!

運行Demo

out/Default下面有個AppRTCMobile.app打開來可以玩= =


免責聲明!

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



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