官方说明:
http://www.webrtc.org/reference/getting-started/prerequisite-sw
安装 TortoiseSVN
http://tortoisesvn.net/downloads.html
官方说明:
如果这个地址打不开,那直接 svn 下载
使用 TortoiseSVN checkout http://src.chromium.org/svn/trunk/tools/depot_tools 到 depot_tools 目录
然后将 depot_tools 目录添加到 PATH 环境变量中
新建一个目录,比如 webrtc,控制台 cd 到该目录
获取源码,在控制台依次执行下面的命令:
gclient config http://webrtc.googlecode.com/svn/trunk
gclient sync --force
获取平台相关文件,生成本地工程,在windows平台会生成VC工程文件
gclient runhooks --force
如果执行过程中出现连不上 commondatastorage.googleapis.com (连接被重置)的错误,修改 trunk/webrtc/tools/update_resources.py,将 http 改为 https
-REMOTE_URL_BASE = 'http://commondatastorage.googleapis.com/webrtc-resources'
+REMOTE_URL_BASE = 'https://commondatastorage.googleapis.com/webrtc-resources'
打开 trunk 目录下的 all.sln ,编译名称为 All 的项目,会编译所有的项目。
我在编译时,出现了几个错误,下面几个项目编译不通过,这里把解决方法记录下来。
LINK : fatal error LNK1181: cannot open input file 'd3d9.lib;gdi32.lib;strmiids.lib;winmm.lib'
刚开始以为这些库没有,但是在 WindowSDK 的 lib 目录下有这些问题,后来才发现,VS 中多个库是用空格分开的,这里用分号分开了,所有出现错误。Release、Debug 配置都有这个问题
1>WinTest.cc
1>WinTestDlg.cc
1>e:\webrtc\trunk\webrtc/voice_engine/test/win_test/WinTest.h(14) : fatal error C1189: #error : "include 'stdafx.h' before including this file for PCH"
1>e:\webrtc\trunk\webrtc/voice_engine/test/win_test/WinTest.h(14) : fatal error C1189: #error : "include 'stdafx.h' before including this file for PCH"
调整包含头文件顺序,会出现更多的错误,后来干脆移除该项目,反正只是一个测试程序。
1>audio_vector_unittest.cc
1>.\audio_coding\neteq4\audio_vector_unittest.cc(83) : error C2355: 'this' : can only be referenced inside non-static member functions
1>.\audio_coding\neteq4\audio_vector_unittest.cc(83) : error C2227: left of '->array_length' must point to class/struct/union/generic type
....
出现错误的地方都是 this->array_ 和 this->array_length() ,把 this-> 去掉应该可以编译。
1>desktop_region.cc
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\include\xutility(337) : error C2664: 'bool (const webrtc::DesktopRegion::RowSpan &,int32_t)' : cannot convert parameter 2 from 'webrtc::DesktopRegion::RowSpan' to 'int32_t'
1>D:\Program Files\Microsoft Visual Studio 9.0\VC\include\xutility(315) : error C2664: 'bool (const webrtc::DesktopRegion::RowSpan &,int32_t)' : cannot convert parameter 2 from 'const webrtc::DesktopRegion::RowSpan' to 'int32_t'
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
这个错误只有 Debug 配置会出现,是因为在 Debug 配置下,标准库对大小比较算子多做了反向校验,通过在该文件最开始加上下面一行代码可以屏蔽该校验
#define _HAS_ITERATOR_DEBUGGING 0