WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

时间:2023-12-18 16:26:38

工作需要测试网络传输算法,逐学习WebRTC源码

工作环境

Mac OS 10.14

Xcode 10.2.1

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

源码下载

从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!!!!

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

吐槽一下找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,一打开就看到这个:

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

好吧,那macos版本信息估计在这个rules.gni里了,打开之后发现估计在base_rules.gni里,打开这个文件之后:

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

ok,那估计就在这个mac_sdk.gni里了

打开来之后终于看到了曙光!

找到src/build/config/mac/mac_sdk.gni文件,打开来长成这样:(截图是我改过之后的)

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

,把mac_deployment_target10.10.0改成10.11.0就可以了,保存之后clean,然后再用gn gen生成一次ninja文件,最后再用ninja编译,就没问题了!

WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

运行Demo

out/Default下面有个AppRTCMobile.app打开来可以玩= =