这段时间接触了webrtc这个开源库!像很多人说的那样,webrtc是个大宝藏(其实,现在的我还并没有捡到什么宝藏,看来还要假以时日啊!)!但是我可以说的是我被webrtc的石头砸的是满头大包!webrtc源码的下载和编译是我见过的最tm操蛋的,整个过程要做的事情本来就是很简单的,可是具体实施起来,真的不容易啊。
首先是源码的获取,这个简单,既然是开源库,拿到源码地址简单啊!可不是?找了一下,发现csdn上有相关的文章,比如这篇http://blog.csdn.net/temotemo/article/details/7056581,感谢这位老哥的文章,起码让我知道要搞webrtc得要准备哪些工具,svn、git、python、depot_tools等等关键字,按照上述网址的设定,我算是把刀枪都准备好了,可是这才是万里长征的第一步!本以为webrtc的源码很快就能下下来了,心里有点悠然,按照上面文章所说,代码拉下来是这样的svn checkout http://webrtc.googlecode.com/svn/trunk/,一看就知道是svn上的,可能那个时候webrtc代码仓库是放在svn上吧,但是现在不是了,谷歌将它迁移到了git上面,所以是这样git clone https://chromium.googlesource.com/external/webrtc,后面git sync的时候真是要命,我花了三天的时间弄这个,结果各种报错了和disconnect,当我满心欢喜地检查的时候,心里真是无语,没办法,要下下来同步的配置信息必须要翻墙才行(原因,你懂的),这种尝试已经让我很厌烦了,当然如果你的网速够好,相关环境的配置也很棒,自己拉代码,按照上面那些文章去执行git命令,那是再好不过的!
我想还是找个别人下下来的源码,然后自己i编译吧,还很好网上发现这个老兄走得比我远很多啊,人也好,自己下下来的webrtc代码都分享了,详情去这老哥的文章里面找http://blog.csdn.net/yangzhenping/article/details/51276320,很是感激啊,下完代码上来后,整个压缩包都十G多,我天,幸好我没有在第一条路上走到黑!不然就我公司那网络,估计没个一星期,下不完! 看过上面那位来兄的文章我知道,他是用ninja编译成了vs2015工程,所以vs2015是必不可少的,那就下呗!实际上你在拉代码的时候设置vs的版本号set GYP_MSVS_VERSION=2015的时候你可以设vs2013也是可以的,不过我推荐还是vs2015。
vs2015的安装也是个漫长的过程,最后干脆给我来个什么什么安装错误就完事,不过好在装上了,于是我迫不及待地用vs2015打开webrtc\webrtc\src\all.sin,打开过程很慢,我系统是win8.1,win10上面据说vs2015运行得很顺畅!打开后顺便编译了一个工程,还好只报一个错误,错误如下error MSB3703 call ninja.exe -C "****",已退出,代码为1.,这个错误码,初看之下,我以为是我depot_tools的环境变量没有设置好,导致webrtc编译的时候找不到ninja.exe的路径,可查了一下不是这个原因,在git bash命令窗口下我的ninja工作得很好!解决这个问题花了我不少时间,后来看到了这篇文章,http://stackoverflow.com/questions/23405112/building-webrtc-using-ninja-and-debugging-in-vs2013,虽然是英文的,但是我还是能看懂的,这当让是废话,可是我比较爱说这话~~,在后面的answer只有短短一行,但是我发现会不会是我vs2015安装的问题呢,之前安装的时候不是有提示说一些组件没有安装成功么,于是灵机一动,修复vs2015,结果运行后重启电脑编译webrtc还是报那个错误,于是我索性再次修复vs2015,一看安装提示真的发现还有几个组件并未安装成功,于是再次安装,这样多修复了几次,vs2015安装完成时也不再提示有什么组件没有安装成功!我想这该可以了吧,于是重启电脑再次编译webrtc,问题果然解决!
此问题得到了解决,可是原因,我想是因为之前vs2015没有安装上win10的sdk,导致编译的时候找不到相关编译工具的正确路径吧,vs2015本来就是win10的原配! 至此得到了webrtc的源码------》编译了webrtc , 如果你想自己再重新编译一下webrtc,那么也行只需要set相关的环境变量,然后执行python webrtc/build/gyp_webrtc.py,整个工程就会重新编译一次了,所以相关的环境变量的设置很关键! 到最后我才发现整个过程,我是走了弯路,特此记录这个过程,让有缘人把时间花在更重要的地方!
-----------------------------------------------------------------------
附加:昨天很奇怪,有些项目我重新修改后再编译,继续报错error MSB3703 call ninja.exe -C "****",已退出,代码为1.而且还报了另外一个error,中文意思是说没有权限删除webrtc项目工程中src/out下的当前调试项目的exe文件,后来听网上某位道友说git有可能限制了webrtc项目工程的可读和可写属性,使得自己只可以调试和查看项目,而不可以修改,于是右键webrtc文件夹修改webrtc项目工程的文件权限为可读可写,重新开启vs2015打开webrtc的all.sIn,修改之前的项目源码,重新编译,编译器不再报没有权限修改文件的错误了,MSB3703错误也消失了,这倒让我感到奇怪,持续更新中。
-------------------------------------------------------------------------------------------------------------
对了,webrtc支持的vs2015只是update2版本的,其他的vs2015版本好像会有问题。
-------------------------------------------------------------------------------------------------------------
继续报错error MSB3703 call ninja.exe -C "****",已退出,报这个错误,很有可能是你的代码代码写错了,ninja.exe在编译当前工程的时候发现了错误,当然它并没有像vs那么强,不能够指出错误的具体源码段及其行号,只是报了这编译不通过的错误。